支付宝面试总结(2009.10.12)

10号晚上的宣讲+笔试,笔试笔得一般,程序题做错了,没想到用递归,还有记得做错的是一道网络题,问会话层(Session)是OSI里的第几层,我忘了展示层(Presentation),于是选了第六层光荣的错了。
11号一早通知9点面试,我起床洗漱吃早饭,然后又接到一个电话说是12号早上9点,于是只好上床继续睡觉。
面试前打印了几份简历,进去咖啡馆之后填了表格就开始面了。中间省略过程数百字。。。直接开始总结几个答的不好的问题,因为一面就挂了。
Spring的事务有几种方式?
题目到现在也不是很明白,我觉得大概的解答应该是声明式事务处理的几种方式(1.0时代的parentTemplate、2.0时代的AOP代理和@Transational),另外加上编程式事务处理,直接上TransactionTemplate和PlatformTransactionManager。
Spring Bean加载有几种方式?
我回答了启动时加载,现在看来有点答非所问。加载bean默认为即时加载,另外也可以设置延迟加载。加载可以为单例、每次一个实例、request、session、global-session。
Spring Bean有几个设置属性?
我只想起来scope,应该想起来auto-wire, init-method, destroy-method一时都忘了。另外还有lazy-init,  factory-bean, factory-method。
Collections.sort()对参数的要求?
这个是最不应该答错的题目。我只想起来sort的集合必须实现List接口,却忘了最重要的sort的对象必须实现Comparable接口。
描述一个LRU的HashMap。
这题一开始楞没听明白,老想着HashMap不是链式连接冲突的entry的么,怎么会size不够。磨叽了半天,搞了一个堆出来计数,面试官也不满意。
后来想想其实用个链表把Entry链接起来就可以了,正好在网上搜到了使用LinkedHashMap实现LRU Cache的做法,在这里描述一下内部实现:

  1. 扩展HashMap.Entry,使Entry间使用双链表连起来;
  2. get的时候,把该Entry移到链表的尾部;
  3. put的时候,把Entry放到链表的头部;
  4. 如果规模超标,则把链表头部的Entry抛弃;

项目里使用的设计模式。
我拿了资源安排里,封装两种安排算法到两个实现同一个接口的类的例子,说这是策略模式,面试官有些不认同。后来回头想想,项目里还有其他的模式:

  • Singleton,Facade自不必说;
  • Strategy有一个更好的例子,使用PROBE的A、B、C、D四种方法进行时间和规模的估算。另外还有两个Factory来负责生成相应的计算方法实例。
  • Decorator模式,封装了MultiTenantSessionFactory,持有一个SessionFactory对象,也实现了SessionFactory接口。

大概就想起来这些问题。一开始的自我介绍忘记介绍做过的项目了,这可能是悲剧的来源吧。

使用正则表达式过滤不包含某子字符串的单词

昨天在学院版上看到有人发帖问,标题里的内容就是帖子里问题的核心。举个例子来说,就是给一堆单词,匹配所有不包含某字符串的单词。比如要求剔除aa,那么对于单词aab, abc, abca, abaac,就匹配abc, abca。
问题似乎很简单,但我从来没用过逆向匹配。有限状态自动机很容易就可以画出来,但怎么转化成正则表达式倒是忘得一干二净。最后google了半天,发现一个博客给出了正确答案(目前能想到的都验证通过):\b((?!aa)\w)+\b
这个表达式挺不好理解的。(?! pattern)是负向预查(negative look ahead),放在\w前面显然不是和\w进行组合。需要把表达式拆开来看,比如\b(?!aa)\w(?!aa)\w(?!aa)\w\b,这么来看就比较好理解了。首先不可以以aa开头,然后每个单个字符后都不能跟aa,直到结尾。这么就基本把aa给堵死了。
另外,如果支持negative look behind的话(Javascript不支持),应该也可以写作\b(\w(?<!aa))+\b。

远程opensusue无法使用home, end

用了opensusue当服务器两个月,碰到一个小麻烦的问题就是使用putty SSH登录上后,BASH里无法使用HOME和END进行行首和行尾的定位。原本以为是putty的问题(以前用的都是Secure Shell),今天正好想到这个问题google了一把,发现是opensusue的问题,参见这里
我用的是opensusue10,配置文件都是/etc/inputrc,但行数有些不同,我的是90-91行,把下面的代码注掉就OK了:

#”\e[1~”:       history-search-backward
#”\e[4~”:       set-mark

Tomcat启动地址解析错误

贴log:
SEVERE: Protocol handler pause failed
java.net.UnknownHostException: NEOSTA: NEOSTA
at java.net.InetAddress.getLocalHost(InetAddress.java:1474)
at org.apache.jk.common.ChannelSocket.unLockSocket(ChannelSocket.java:484)
at org.apache.jk.common.ChannelSocket.pause(ChannelSocket.java:283)
at org.apache.jk.server.JkMain.pause(JkMain.java:681)
at org.apache.jk.server.JkCoyoteHandler.pause(JkCoyoteHandler.java:153)
at org.apache.catalina.connector.Connector.pause(Connector.java:1073)
at org.apache.catalina.core.StandardService.stop(StandardService.java:563)
at org.apache.catalina.core.StandardServer.stop(StandardServer.java:744)
at org.apache.catalina.startup.Catalina.stop(Catalina.java:628)
at org.apache.catalina.startup.Catalina$CatalinaShutdownHook.run(Catalina.java:671)
关键词:UnknownHostException, JK
原因在google的第一个,虽然上面说的是AIX,但也适用于普通Linux:RHEL5原装的GCJ太山寨了,记得在启动tomcat前要指定JAVA_HOME。

一个人人(校内)应用的想法

一个星期前坐车时想到的。应用的功能很简单,就是帮助求职人群找到笔友、面友。
添加应用的用户可以创建一个活动,比如参加宣讲会、笔试、面试,并对这个活动添加评论(如笔经、面经)。其他人也可以添加评论形成互动。
搜索是一个比较重要的功能,相对于BBS上发帖寻同路人的行为,更有效率。
开发上,可以使用appspot进行部署,但appspot经常会被墙,或者是自己出了问题。自己Host的话要考虑流量和服务器的负载。
营收上可以在上面放adsense,虽然没几个钱。
只是个想法,暂时没什么时间实现,看这个周末有没有空搭一个架子出来。校内的文档很糟糕,支离破碎的。如果有人看到这个想法并打算尝试的话,自便。我也希望看到这个应用的上线。现在校内上关于求职的应用几乎没有。

Twitter Weekly Updates for Marshall

  • Cari’s blog talks about how to lose over 35 lb’s in a single month! Thanks Cari! http://google-mart.com #
  • denomination /dɪˌnɒmɪˈneɪʃn/ 教派,面值 #dailyword #
  • object 关键字告诉 Scala 编译器这将是个单例对象,因此 Scala 将确保只有一个 HelloWorld 实例存在 #
  • RT @lianyue: 绿坝通知出台始末:软件服务司“国际通行做法”误导李毅中。话说回来,只有没常识,才会相信这是“国际通行做法”。若有个人的自由选择权不可侵犯这种常识,何至于受骗做出错误决定呢?http://bit.ly/Zxo4o #
  • RT @keenTurbo: RT @junyu 坑计算概论: http://bit.ly/OcILA 深入浅出谈坑计算: http://bit.ly/pQ8BM || 囧 ,坑蒙拐骗偷,诓侃宰+++计算//KCN这个强 #
  • 不是俺们崇洋媚外,可框计算这名字怎么听起来这么土呢。。。比起云来说一点没有美感啊 #
  • appspot好了,看来是光缆的影响,错怪墙了? #
  • appspot.com全面被墙?现在一个都上不去,奇怪 #
  • RT @keenTurbo: RT @oran_ge 某些 twitter 同步工具会用你的账户给好友 dm 广告,太恶心了……//今天我就中招了,难道是twitterfeed?不像啊 #
  • mmarket拖了好久一直不上线,耍猴呢 #
  • 才知道原来filter-mapping里可以配servlet-name。原来以为只能配url-pattern,这么久的Java Web白混了 #
  • 那个spam链接千万别点!! #
  • 为啥我会发spam?那会儿我还在睡觉。。 #
  • 百度推出诓计算,诓你没商量 #
  • using free products Cari lost over 30lb’s in 4 weeks! see how she did it read her blog! http://cari-weightloss.org #
  • 买了十一回家的机票 #
  • LP说的没错,选书要慎重 #
  • Space Log 推荐系列文章(连载中): Original URL: http://bit.ly/bnEP9
    .. http://bit.ly/U5Soy #
  • 星际争霸桌游版:http://bit.ly/dDR8M #
  • Fiddler算是居家旅行,杀人越货,Web开发必备良药吧 #
  • 发现我挺喜欢网易历史频道的,里面的新书推荐都有些兴趣 http://history.news.163.com/ #
  • RT: 最后想说的是,中国并没有在铁矿石的贸易中利益“绝对受损”(也就是进口比不进口更差)。中国仍然是铁矿石贸易的受益者。如果价格能多谈下来一点,那受益更多。价格没谈下来,受益会少一点。如果真的绝对受损了,进口了比不进口还要差,那就不要进口就是了。不要因此妖魔化国际贸易。 #
  • 看了大辉的blog,又有点想去丹阳配眼镜了。。 http://bit.ly/8thCx #
  • Twitter Weekly Updates for Marshall:
    编程笑话集锦 http://bit.ly/1dbqoR #
    帝都 = 北京 魔都 = 上海 两都 = 魔都 + 帝都 废都 = 西安 性都 = 东莞.. http://bit.ly/3GteIh #

Powered by Twitter Tools

Twitter Weekly Updates for Marshall

  • 编程笑话集锦 http://bit.ly/1dbqoR #
  • 帝都 = 北京
    魔都 = 上海
    两都 = 魔都 + 帝都
    废都 = 西安
    性都 = 东莞
    成都 = 成都
    旧都 = 南京
    陪都 = 重庆 #
  • 今天是八一四空军节。八一三淞沪会战的第二天 #
  • 居然一天没上google reader,果然事多 #
  • RT @GongmengOCI: 截至8月13日,公盟共收到社会各界以各种方式捐款845783元。 #
  • 原来《白蛇传》讲的是佛道两教相争的故事 #
  • IBM的Form 10-K看得我天昏地暗 #
  • 无所不能的wordpress插件,打消了我无数自己创建一个AppEngine应用的念头 #
  • Websphere的Logging居然是在Admin Console配置的,和log4j.properties无关 #
  • Heroku不错,决定在上面折腾一个redmine试试,只不过不能上传文件 #
  • RT @zhuangbiaowei: 短网址新星tr.im的陨落与思考(更新): Shared by zhuangbiaowei 我一直是tr.im的坚定支持者。
    可能吧之前介绍过不少缩短网址服务,Franky更是全面剖析了Bit.ly。 http://bit.ly/qQbSG #
  • RT @buchimifan 网易历史频道推出专题:一寸山河一寸血,还原曾被扭曲的抗日历史 http://news.163.com/special/0001240D/songhuzhuanti.html //最近在看《寻找真实的蒋介石》,不错的著作 #
  • 最多等3年,乘火车从上海到西安、厦门、北京将只需四五个小时 http://bit.ly/rPjqi #
  • RT @lianyue: 纽约时报:历史上长期受打压的占据多数的伊拉克什叶派,其宗教领袖成功说服追随者无条件放弃暴力报复,即使逊尼派恐怖分子不停发起对平民与什叶宗教圣地的攻击。“让他们杀吧,我们需要耐心”,“暴力报复正是他们所需要的。”http://bit.ly/HhZsG #
  • twitterfeed好久不上,都变样了 #
  • Scrum+Redmine,看上去很美好 #
  • 诺基亚抛弃Symbian,上马Maemo:http://bit.ly/qZUu1 #
  • InfoQ的《硝烟中的 Scrum 和 XP》 ——我们如何实施 Scrum 是一本了解Scrum的不错的电子书 #
  • 相对于XP,Scrum更符合我的胃口 #
  • 各位推友,还有人打算周日去书展的? #
  • 终于知道啥是Network Deployment #
  • RT @robbinfan: VMware花了3.62亿美元收购SpringSource,很意外的新闻,不过Rod同学总算套现了,而且比JBoss的Mark同学套的还多,又把JBoss比下去了。估计很多人会眼红吧。 #
  • VMWare收购SpringSource,Facebook收购FriendFeed #
  • 网易是故意的么。。该评论已关闭:http://bit.ly/Tdg5y #
  • 我们的teenager,aka 90后,是怎么消费媒体的呢? #

Powered by Twitter Tools