`
tedeyang
  • 浏览: 323220 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

新鲜出炉的盛大面试经历

阅读更多

     上午去盛大面试,应聘职位是高级开发工程师(and 架构师,纯属瞎碰)。

     因为下雨,而且地铁不能直达,所以开着车过去的。在内环高架徐家汇那里堵了半个小时,到盛大大门时刚好10点整。

环境很漂亮,盛大是一整个园区,开阔错落,小雨淅淅沥沥,绿意盎然。

     先在门卫那里登记,(从登记表上看,今天有不少来面试的)领了访客证和临时停车证,进门停车,不远处就是一幢三四层高的楼。

     囧的是,接待大厅门口门卫居然要我洗手消毒,感觉怪怪的,一如网上所言。

     然后是填表,这就感觉没档次了,我明明在盛大官方网站的招聘(ps:那个招聘页面像小学生作品,够烂)中写全了个人信息,还要我再写一遍?没意思,感觉有点官僚。

填完表,人事mm领来一个面试官,穿过一楼左边很大一个工作大厅,把我带到里面一间玻璃房面试(后来发现是司机休息室 :))。

     面试感觉不太顺利。面试是这样的:面试官一边看我的简历一边从中挑他感兴趣的技术来问。当然首先是问项目经历。

     他喜欢打断我的讲话,抓住一个字眼顺藤摸瓜。

     譬如问我:“最熟悉哪些设计模式?”,

     我说:“最常用的是Factory...”,

     “那你讲讲Factory的特点和用途?”,

     “Factory是创建型模式,主要作用是...”,我叽叽呱呱讲一通后,他就开始问我别的问题了,害我还有几个常用的模式忘了讲。什么装饰器,代理,门面啊这些我都用到烂了啊。唉,不给我表现机会。

 

     有几个问题被面试官认定为错误。

     问Spring,第一个问题是:“Spring IOC的实现方式?”,我答:“根据配置文件,用反射调用set装配对象。”,他说:“不是吧,反射是早期实现方式”。我傻眼了,然后就看着他在纸上把“Spring”划掉。

阿门,这样就否定了我的Spring能力?真的很无语,怎么着我也用了4年Spring,写过View resolver,写过Aware接口,写过动态代理,读过Martin Flower的《DI》,跟踪过Spring源码....这?

 

     还有一个是讲mysql的优化,问:“如果查询时发现硬盘狂闪,你觉得有哪些可能瓶颈?”

答:“可能是索引问题,索引建得不好或者sql没有按照索引来查询,另外还有查询语句不能很快减小结果集,这个可以分析查询计划。”,

     后面又问道:“一般索引的命中率是多少?”,我随口答了“50%”,这个我确实不清楚。

 

     还有http相关问题,第一个问“500,404,301的意思”,前两个我很清楚,301我就傻了。模模糊糊记得是网关之类的,这个只能怪自己的记忆力不好了。然后就不再问我http其他问题了,显然他认为我也就这水平了。

 

     其他的问题答得还算不错。

     最后面试官让我问他问题——每个面试官都喜欢这么讲——有什么好问的?其实我已经有点憋闷,抬眼看去,玻璃房对面路边停着一辆钛灰色马6,很熟悉的流线型身躯,于是随口说了一句:“这里停车收费吗?”。答曰:“不收费,不过要早点来,晚了没位置。”

     哈哈。接着就完事了,人事mm告诉我,从玻璃房出去直接就可以到大门了。

     嗯,没错是捷径,我很快就出门了,在没下大雨前出了盛大,驶上居里路。路上一直想着Spring的IOC实现问题,努力回忆以前看过的源码。半个多小时候平安到家。

 

补充:现在想想,盛大不去也罢,这样“草菅人命”,真让人不爽。

看起来大家对Spring和模式比较感兴趣,那个索引的命中率多少比较好呢?有没有数据库的高手在?我没长期监测过。(这个面试官估计在数据库上很有经验)

 

再补充:后来去二面了(如第九页seanwon所暗示)。二面面试官更有水平了,问问题是这样方式的:“哦~,我经常听人说什么什么....,你能和我分享一下你的心得吗?”。很厉害,有诗为证:随风潜入夜,润物细无声。情商很厉害,确实见识到高人了,文武全才啊,景仰一下。

 

再再补充:今天一口气看完《杜拉拉升职记》第三部,感觉二面面试官很有SH招C&B时要的那种“500强大公司的范儿“,哈哈。推荐看看《杜拉拉升职记》,当然不是电影。看完了就一个感觉:要不怎么说程序员都单纯呢,看那小说写得叫一个斗智斗勇,不过很多地方还是挺有意义的。

 

再续:

一晃2012年底,快三年了,塞翁失马焉知非福,现在我又即将踏上新的征途。

三年风雨、三年奋斗、三年无悔,这三年是充实有梦想的三年,感谢lp一路陪伴。

分享到:
评论
80 楼 luolonghao 2010-03-14  
索引还有命中率说法?如果强加命中率,根据SQL,0%和100%
79 楼 抛出异常的爱 2010-03-14  
iaimstar 写道
。。。。。。。。。。。。。觉得不太对

用不用索引。。。。与执行计划有关。

如果你用的起oracle的光头。
这与工程师一点关系没有。
78 楼 iaimstar 2010-03-14  
。。。。。。。。。。。。。觉得不太对
77 楼 tedeyang 2010-03-13  
zhuixinjian 写道
研究了下命中率的问题

下面的帖子是传输门。最后是97%比较理想了。

http://www.im80hou.com/html/oracle/2009/0722/824.html

这篇文章讲的是缓存命中率的问题,很有帮助,谢谢。
97%也很难达到吧,我觉得仍然要看应用中读写的分布情况。
这么高的命中率也很不现实,内存数据要占常用数据的97%,这不就是变成内存数据库了吗?记得robbin曾经讲过javaeye的缓存命中率的生产数据(借此说明数据库三大范式不与OOP冲突,我搜索了一下,是这篇帖子:http://www.iteye.com/topic/151187),memcached(虽然不是数据库的,但原理也是差不多)的命中率是85%,不知道现在robbin有没有将其优化到97%的极端境界?

然而我的问题还没有解答,“索引的命中率”和“缓存的命中率”是截然不同的,我的理解是:所有查询中能利用到索引查到相应结果的概率?这个问题也很含糊。呵呵,其实没必要深究了。

76 楼 zhuixinjian 2010-03-13  
研究了下命中率的问题

下面的帖子是传输门。最后是97%比较理想了。

http://www.im80hou.com/html/oracle/2009/0722/824.html
75 楼 signingoff 2010-03-06  
tedeyang 写道
还是没人回答索引命中率?

索引命中率?
是缓存命中率吧?
74 楼 lookmoon 2010-03-05  
我下周一也要去盛大面试了,也是应聘高级开发工程师,我做java也快5年了,请问楼主当时还被问到了哪些问题,还有其他面试过的兄弟们也提供一些面经吧,不胜感激!!
73 楼 tedeyang 2010-03-05  
还是没人回答索引命中率?
72 楼 aronlulu 2010-03-05  
tedeyang 写道
炫烂彩虹 写道
他叫你提问的时候,你应该问:“Spring IOC的实现方式是什么”,切磋下好了。

嗯,有道理,不过当时我比较淡定,淡定,有点不愿多讲。


反正已经郁闷了,索性让他淡疼一把。。。。。。

突然发现炫烂彩虹是。。。。果然是的。。。。。。
71 楼 iaimstar 2010-03-04  
设计模式也是看过书,想想:当年我tm这么干问题早解决了之类的

然后就会有几个模式理解非常清楚

其他的,一般很简单的随手就用了,很复杂的场合也不多
70 楼 抛出异常的爱 2010-03-04  
把生背设计模式的想法扔一边.
没写过代码
没天天被变更折磨的人
没理由看两本书就能用好模式.
69 楼 case0079 2010-03-04  
chandler 写道
case0079 写道
chandler 写道
flootball 写道
chandler 写道
case0079 写道
面试题大众化了,没什么让人觉得惊艳的.

引用
那你讲讲Factory的特点和用途?”

完全是学院派的考试法.
工作当中都是面对特定的问题,思考出特定的解决方法.经验丰富的程序员根本不需要去搞懂什么XX模式,自己写出来的程序自然就是XX模式了.

      如果这样,为什么会有人专门去研究设计模式等相关学院的东西?
      做事情,太过于学院固然不对,太学院是做不了东西。但是只顾经验,不顾理论,更糟糕,你做错了,自己还不知道。沾沾自喜的认为自己很厉害。

像这些设计模式就像个牢笼,把你锁在里面!
这样的话焉有创新能力。

没有基础,怎么谈创新?


你认为的那些基础应该就是那些设计模式了吧?那么请问这些设计模式又是怎么来得?我认为无非是从自己的经验中总结出的.那么拥有多年经验的程序员如果没有这种归纳能力的话,就只是代码工而已.

     你怎么能保证自己的总结一定正确?你怎么保证你花10分钟,看看资料的就能解决的问题。而不是花一个小时,甚至一两天自己研发出来?
     基础的作用不是让你照本宣科。而是一面镜子。如果不明白,就仗着自己的经验,比代码工人还不如。至少代码公认犯错,搞砸事情的概率要比你低,错误造成的影响要比你低



没有人能保证自己永远正确.即使学习了设计模式也不见得用得好,就像即使学习了孙子兵法也不见得能打好仗.思想不是看看资料就能掌握的,要不然怎么说中国的硬件和西方差不多了,但软件还差很远呢?这是一条没有捷径的道路.

我清楚基础的作用,但是设计模式不是基础.那是思想,即使你倒背如流也不见得能用好.

一个无庸质疑的事实是设计模式是总结经验得出的.而不是像1+1=2这样的公理天然存在的.这一方面离不开丰富的经验,一方面也离不开过人的思维.
68 楼 JackAndroid 2010-03-04  
黑暗浪子 写道
卧底在人间 写道
楼上这哥们 真TM执着~:)


要学习~技术人员就需要这种精神

呵呵,过奖了,我只是闲着也是闲着,还想弄明白是什么而已。
67 楼 黑暗浪子 2010-03-04  
卧底在人间 写道
楼上这哥们 真TM执着~:)


要学习~技术人员就需要这种精神
66 楼 tedeyang 2010-03-04  
TomHornson 写道
tedeyang 写道
yangke250 写道
楼主应该面试的是盛大在线,看看面试官的能力,也不难想出盛大为什么这么多年还是在吃一个游戏老本,经历差不多
问:了解数据库吗?
答:还行
问:知道查锁的SQL怎么写吗?
答:一般查baidu,google
了解数据库删掉,雷。。。。。。。不过听说里面待遇不错

握手握手,人家也问我“那查看执行计划用什么命令?”我这个工作一向是在sql客户端工具里直接点按钮的,以前也查过怎么写,模模糊糊回答:“好像是plan吧”,哈哈,面试官不屑:“是explain吧”,我马上想起来确实是,只能点头状。


explain plan,一般首先获取raw sql trace,然后用tkprof命令生成,
当然sqlplus设置,也可以在SQL执行后,及时显示,
还可以在专用的表中查询出来。

这是oracle,不太熟悉性能调整方面的技巧。
我常用的是mysql,是在my.ini中打开show_slow_sql选项,查看slow sql,然后么在sqlmanager,mysql-front中查看执行计划。
65 楼 卧底在人间 2010-03-04  
楼上这哥们 真TM执着~:)

64 楼 JackAndroid 2010-03-04  
<p>配置文件</p>
<pre name="code" class="java"> &lt;bean id="myPeople" class="com.hj.pojos.People"/&gt;
  &lt;bean id="myDepart" class="com.hj.pojos.Department"&gt;
     &lt;property name="manager" ref="myPeople"/&gt;
  &lt;/bean&gt;</pre>
<p> 关于bean的创建前面的源码已经给出,现在给出属性注入</p>
<pre name="code" class="java">          PropertyDescriptor pd = pv.resolvedDescriptor;
if (pd == null || !pd.getWriteMethod().getDeclaringClass().isInstance(this.object)) {
pd = getCachedIntrospectionResults().getPropertyDescriptor(actualName);
if (pd == null || pd.getWriteMethod() == null) {
PropertyMatches matches = PropertyMatches.forProperty(propertyName, getRootClass());
throw new NotWritablePropertyException(
getRootClass(), this.nestedPath + propertyName,
matches.buildErrorMessage(), matches.getPossibleMatches());
}
pv.getOriginalPropertyValue().resolvedDescriptor = pd;
}</pre>
<p> 关键的代码就是pd = getCachedIntrospectionResults().getPropertyDescriptor(actualName);其中actualName相对于上述xml文件即为其中的manager,由此可见发现如果配置了property而在java代码中则没有相应的setter方法是会抛出异常的。如果有,则顺利调用该方法注入即可</p>
<pre name="code" class="java">     Method writeMethod = pd.getWriteMethod();
if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) {
writeMethod.setAccessible(true);
}
writeMethod.invoke(this.object, new Object[] {valueToApply});</pre>
<p>   writeMethod.invoke即可调用相应的setter方法注入属性。</p>
63 楼 TomHornson 2010-03-04  
tedeyang 写道
yangke250 写道
楼主应该面试的是盛大在线,看看面试官的能力,也不难想出盛大为什么这么多年还是在吃一个游戏老本,经历差不多
问:了解数据库吗?
答:还行
问:知道查锁的SQL怎么写吗?
答:一般查baidu,google
了解数据库删掉,雷。。。。。。。不过听说里面待遇不错

握手握手,人家也问我“那查看执行计划用什么命令?”我这个工作一向是在sql客户端工具里直接点按钮的,以前也查过怎么写,模模糊糊回答:“好像是plan吧”,哈哈,面试官不屑:“是explain吧”,我马上想起来确实是,只能点头状。


explain plan,一般首先获取raw sql trace,然后用tkprof命令生成,
当然sqlplus设置,也可以在SQL执行后,及时显示,
还可以在专用的表中查询出来。
62 楼 evaspring 2010-03-04  
关键楼主面试的是高级职位,而且工作5年,别人肯定会严格的  ~
61 楼 landor2004 2010-03-04  
以下内容引自spring2.5中文参考手册
3.2.3.2. 实例化bean
从本质上来说,bean定义描述了如何创建一个或多个对象实例。当需要的时候, 容器会从bean定义列表中取得一个指定的bean定义,并根据bean定义里面的配置元数据 使用反射机制来创建(或取得)一个实际的对象。

相关推荐

Global site tag (gtag.js) - Google Analytics