- 浏览: 326137 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
libaogui777:
前辈,您好, 使用PDFbox 提取内容遇到一个问题,想请教您 ...
java进行pdf解析-----pdfbox -
xin_hany:
提示惊醒了一下,解决了一个让人惆怅的问题,
danga的MemcachedClient的几个缺陷 -
roroyangivan:
牛B啊。。。我觉得 这种 回答。。。阿里的的CTO 都 HOL ...
怎样才是一个好的架构? -
406657836:
今天知道了一个线程创建时会给stack分配1M内存?一个线程默 ...
jvm线程的stack -
linzx0212:
受教了……
danga的MemcachedClient的几个缺陷
上午去盛大面试,应聘职位是高级开发工程师(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一路陪伴。
评论
<div class="quote_div">
<div class="quote_title">JackAndroid 写道</div>
<div class="quote_div">
<p>继续说昨天跟踪的事情,我跟踪从XmlBeanFactory开始,其通过XmlBeanDefinitionReader载入xml配置文件中的BeanDefinition信息。随后通过beanDefinition来获取class</p>
<pre name="code" class="java">Constructor constructorToUse = (Constructor) beanDefinition.resolvedConstructorOrFactoryMethod;
if (constructorToUse == null) {
Class clazz = beanDefinition.getBeanClass();
if (clazz.isInterface()) {
throw new BeanInstantiationException(clazz, "Specified class is an interface");
}
try {
constructorToUse = clazz.getDeclaredConstructor((Class[]) null);
beanDefinition.resolvedConstructorOrFactoryMethod = constructorToUse;
}
catch (Exception ex) {
throw new BeanInstantiationException(clazz, "No default constructor found", ex);
}
}
return BeanUtils.instantiateClass(constructorToUse, null);</pre>
<p> 上面代码关键一句就是Class clazz = beanDefinition.getBeanClass();接着调用BeanUtils来创建实例</p>
<pre name="code" class="java"> public static Object instantiateClass(Constructor ctor, Object[] args) throws BeanInstantiationException {
Assert.notNull(ctor, "Constructor must not be null");
try {
ReflectionUtils.makeAccessible(ctor);//配置可见
return ctor.newInstance(args);//创建实例
}
catch (InstantiationException ex) {
throw new BeanInstantiationException(ctor.getDeclaringClass(),
"Is it an abstract class?", ex);
}
catch (IllegalAccessException ex) {
throw new BeanInstantiationException(ctor.getDeclaringClass(),
"Has the class definition changed? Is the constructor accessible?", ex);
}
catch (IllegalArgumentException ex) {
throw new BeanInstantiationException(ctor.getDeclaringClass(),
"Illegal arguments for constructor", ex);
}
catch (InvocationTargetException ex) {
throw new BeanInstantiationException(ctor.getDeclaringClass(),
"Constructor threw exception", ex.getTargetException());
}
}</pre>
<p> 从上面代码知道获取bean实例不就是通过class.getDeclaredConstructor().newInstance(args)生成的??这中方式除了叫反射,难道还有别的名字?</p>
</div>
<p>呵呵,很执着啊你。</p>
</div>
<p> 呵呵,我想看看到底是什么?还在跟呢</p>
<div class="quote_div">
<p>继续说昨天跟踪的事情,我跟踪从XmlBeanFactory开始,其通过XmlBeanDefinitionReader载入xml配置文件中的BeanDefinition信息。随后通过beanDefinition来获取class</p>
<pre name="code" class="java">Constructor constructorToUse = (Constructor) beanDefinition.resolvedConstructorOrFactoryMethod;
if (constructorToUse == null) {
Class clazz = beanDefinition.getBeanClass();
if (clazz.isInterface()) {
throw new BeanInstantiationException(clazz, "Specified class is an interface");
}
try {
constructorToUse = clazz.getDeclaredConstructor((Class[]) null);
beanDefinition.resolvedConstructorOrFactoryMethod = constructorToUse;
}
catch (Exception ex) {
throw new BeanInstantiationException(clazz, "No default constructor found", ex);
}
}
return BeanUtils.instantiateClass(constructorToUse, null);</pre>
<p> 上面代码关键一句就是Class clazz = beanDefinition.getBeanClass();接着调用BeanUtils来创建实例</p>
<pre name="code" class="java"> public static Object instantiateClass(Constructor ctor, Object[] args) throws BeanInstantiationException {
Assert.notNull(ctor, "Constructor must not be null");
try {
ReflectionUtils.makeAccessible(ctor);//配置可见
return ctor.newInstance(args);//创建实例
}
catch (InstantiationException ex) {
throw new BeanInstantiationException(ctor.getDeclaringClass(),
"Is it an abstract class?", ex);
}
catch (IllegalAccessException ex) {
throw new BeanInstantiationException(ctor.getDeclaringClass(),
"Has the class definition changed? Is the constructor accessible?", ex);
}
catch (IllegalArgumentException ex) {
throw new BeanInstantiationException(ctor.getDeclaringClass(),
"Illegal arguments for constructor", ex);
}
catch (InvocationTargetException ex) {
throw new BeanInstantiationException(ctor.getDeclaringClass(),
"Constructor threw exception", ex.getTargetException());
}
}</pre>
<p> 从上面代码知道获取bean实例不就是通过class.getDeclaredConstructor().newInstance(args)生成的??这中方式除了叫反射,难道还有别的名字?</p>
</div>
<p>呵呵,很执着啊你。</p>
问:了解数据库吗?
答:还行
问:知道查锁的SQL怎么写吗?
答:一般查baidu,google
了解数据库删掉,雷。。。。。。。不过听说里面待遇不错
握手握手,人家也问我“那查看执行计划用什么命令?”我这个工作一向是在sql客户端工具里直接点按钮的,以前也查过怎么写,模模糊糊回答:“好像是plan吧”,哈哈,面试官不屑:“是explain吧”,我马上想起来确实是,只能点头状。
问:了解数据库吗?
答:还行
问:知道查锁的SQL怎么写吗?
答:一般查baidu,google
了解数据库删掉,雷。。。。。。。不过听说里面待遇不错
<pre name="code" class="java">Constructor constructorToUse = (Constructor) beanDefinition.resolvedConstructorOrFactoryMethod;
if (constructorToUse == null) {
Class clazz = beanDefinition.getBeanClass();
if (clazz.isInterface()) {
throw new BeanInstantiationException(clazz, "Specified class is an interface");
}
try {
constructorToUse = clazz.getDeclaredConstructor((Class[]) null);
beanDefinition.resolvedConstructorOrFactoryMethod = constructorToUse;
}
catch (Exception ex) {
throw new BeanInstantiationException(clazz, "No default constructor found", ex);
}
}
return BeanUtils.instantiateClass(constructorToUse, null);</pre>
<p> 上面代码关键一句就是Class clazz = beanDefinition.getBeanClass();接着调用BeanUtils来创建实例</p>
<pre name="code" class="java"> public static Object instantiateClass(Constructor ctor, Object[] args) throws BeanInstantiationException {
Assert.notNull(ctor, "Constructor must not be null");
try {
ReflectionUtils.makeAccessible(ctor);//配置可见
return ctor.newInstance(args);//创建实例
}
catch (InstantiationException ex) {
throw new BeanInstantiationException(ctor.getDeclaringClass(),
"Is it an abstract class?", ex);
}
catch (IllegalAccessException ex) {
throw new BeanInstantiationException(ctor.getDeclaringClass(),
"Has the class definition changed? Is the constructor accessible?", ex);
}
catch (IllegalArgumentException ex) {
throw new BeanInstantiationException(ctor.getDeclaringClass(),
"Illegal arguments for constructor", ex);
}
catch (InvocationTargetException ex) {
throw new BeanInstantiationException(ctor.getDeclaringClass(),
"Constructor threw exception", ex.getTargetException());
}
}</pre>
<p> 从上面代码知道获取bean实例不就是通过class.getDeclaredConstructor().newInstance(args)生成的??这中方式除了叫反射,难道还有别的名字?</p>
完全是学院派的考试法.
工作当中都是面对特定的问题,思考出特定的解决方法.经验丰富的程序员根本不需要去搞懂什么XX模式,自己写出来的程序自然就是XX模式了.
如果这样,为什么会有人专门去研究设计模式等相关学院的东西?
做事情,太过于学院固然不对,太学院是做不了东西。但是只顾经验,不顾理论,更糟糕,你做错了,自己还不知道。沾沾自喜的认为自己很厉害。
像这些设计模式就像个牢笼,把你锁在里面!
这样的话焉有创新能力。
没有基础,怎么谈创新?
你认为的那些基础应该就是那些设计模式了吧?那么请问这些设计模式又是怎么来得?我认为无非是从自己的经验中总结出的.那么拥有多年经验的程序员如果没有这种归纳能力的话,就只是代码工而已.
你怎么能保证自己的总结一定正确?你怎么保证你花10分钟,看看资料的就能解决的问题。而不是花一个小时,甚至一两天自己研发出来?
基础的作用不是让你照本宣科。而是一面镜子。如果不明白,就仗着自己的经验,比代码工人还不如。至少代码公认犯错,搞砸事情的概率要比你低,错误造成的影响要比你低
完全是学院派的考试法.
工作当中都是面对特定的问题,思考出特定的解决方法.经验丰富的程序员根本不需要去搞懂什么XX模式,自己写出来的程序自然就是XX模式了.
如果这样,为什么会有人专门去研究设计模式等相关学院的东西?
做事情,太过于学院固然不对,太学院是做不了东西。但是只顾经验,不顾理论,更糟糕,你做错了,自己还不知道。沾沾自喜的认为自己很厉害。
像这些设计模式就像个牢笼,把你锁在里面!
这样的话焉有创新能力。
没有基础,怎么谈创新?
你认为的那些基础应该就是那些设计模式了吧?那么请问这些设计模式又是怎么来得?我认为无非是从自己的经验中总结出的.那么拥有多年经验的程序员如果没有这种归纳能力的话,就只是代码工而已.
spring用的是一个叫做ASM的Bycode修改框架的东西来作的,其实spring基本上就是AsM的简便升级,没什么特别多的技术含量,外国的工程师都叫spring是Glue胶水。
AOP和IOC不要混淆,AOP实现基本都是字节码操作库譬如CGLIB/BCEL/ASM来做,
即使用现成的lib,也不是简单的事情。
spring aop在有接口的情况下是用动态代理实现,无法代理的情况下才采用cglib,也就是asm改字节码,更彻底的aop则用可以调用aspectJ实现。
从IOC角度来看,aop只是spring管理对象的一个副产品,spring的核心应该还是ApplicationContext,一个对象池。外围确实用了很多胶水代码来整合其他框架,不过要整合得好用也是设计经验的体现。早期初始化hibernate都要自己搞一个工厂,后来不都是改成spring了。
spring用的是一个叫做ASM的Bycode修改框架的东西来作的,其实spring基本上就是AsM的简便升级,没什么特别多的技术含量,外国的工程师都叫spring是Glue胶水。
AOP和IOC不要混淆,AOP实现基本都是字节码操作库譬如CGLIB/BCEL/ASM来做,
即使用现成的lib,也不是简单的事情。
嗯,有道理,不过当时我比较淡定,淡定,有点不愿多讲。
三年前也有人对我说过发射是早期做法这句话。不过我不以为意。盛大的面试官我也接触过。这公司就是近亲公司,成天桥的兄弟在里面什么成绩都没做出来,就知道指使这个,指使那个。你去这种公司面试掉价啊`
spring用的是一个叫做ASM的Bycode修改框架的东西来作的,其实spring基本上就是AsM的简便升级,没什么特别多的技术含量,外国的工程师都叫spring是Glue胶水。
完全是学院派的考试法.
工作当中都是面对特定的问题,思考出特定的解决方法.经验丰富的程序员根本不需要去搞懂什么XX模式,自己写出来的程序自然就是XX模式了.
如果这样,为什么会有人专门去研究设计模式等相关学院的东西?
做事情,太过于学院固然不对,太学院是做不了东西。但是只顾经验,不顾理论,更糟糕,你做错了,自己还不知道。沾沾自喜的认为自己很厉害。
像这些设计模式就像个牢笼,把你锁在里面!
这样的话焉有创新能力。
说这样话的人,基本上都是(抱歉,让我武断一下) 自己写代码一团糟而且又不高兴去学设计模式的人,总觉得自己有几年资历就很厉害。。。
虽然我个人比较同意“无招胜有招”这样子一个想法,但是我觉得无招胜有招的前提是“在充分了解招式的基础上”。
设计模式只是一个程序员用来交流设计思想的总结而已。
这么好的东东为什么不用,问题是设计模式的出炉本身就是为了可扩展,如果小p类都用设计模式写,会不会太矫情了。
完全是学院派的考试法.
工作当中都是面对特定的问题,思考出特定的解决方法.经验丰富的程序员根本不需要去搞懂什么XX模式,自己写出来的程序自然就是XX模式了.
如果这样,为什么会有人专门去研究设计模式等相关学院的东西?
做事情,太过于学院固然不对,太学院是做不了东西。但是只顾经验,不顾理论,更糟糕,你做错了,自己还不知道。沾沾自喜的认为自己很厉害。
像这些设计模式就像个牢笼,把你锁在里面!
这样的话焉有创新能力。
这也没啥好争的,起码了解设计模式后看别人的代码更容易理解,因为用了一样的“思维”,便于沟通。
创新不可能建立在空白上。
就像练字,先练楷书,再练行书,之后才能狂草,少一步不能成。
罪恶的设计模式啊,我爱你爱的如此发狂,关键是代码如何做到扩展性强,模式并非是best practice。
不喜欢这种面试官..和阿里巴巴的一样的德性,
有水准的人往往不会在 各种规范级别来讨论,而是给你一个课题,说出你的最佳思路,如何完美。
最基础的知识都不懂,还谈什么思路?
301不知道也没关系,请教下谷老师啊,脑容量有限的。
面试你的人一看就是学院理论派
ioc就是di,面试官的意思是如何实现di的,看下代码就知道了,无非就是读取配置文件,构造个对象,放在map里。
这次面试,一是没完整展示我的长处,二是小问题栽跟头。
以后总结经验,继续努力吧。
有可能面试官不是单纯地想知道答案,区区一个ioc实现方式并不能体现出应聘人的能力,他可能想知道你怎么想这个问题,换我就回他:平时工作忙,项目紧,spring的代码因为有的要重构所以大概看过,没有具体深入的研究过,但是实现方式我看下源码就知道了。
其实我没答错。嗯
这次面试,一是没完整展示我的长处,二是小问题栽跟头。
以后总结经验,继续努力吧。
有可能面试官不是单纯地想知道答案,区区一个ioc实现方式并不能体现出应聘人的能力,他可能想知道你怎么想这个问题,换我就回他:平时工作忙,项目紧,spring的代码因为有的要重构所以大概看过,没有具体深入的研究过,但是实现方式我看下源码就知道了。
发表评论
-
《101 things I learned in architecture school》
2011-11-08 22:03 1250写道 工程师倾向于关注与自身领域相关的客观事物。建筑师则更 ... -
《101 things I learned in architecture school》
2011-11-06 14:36 1603写道 人们在消极空间穿行,而在积极空间停留。 建筑空间的 ... -
《101 things I learned in architecture school》读感 1
2011-11-06 12:57 1207前段时间老婆买回一本书,《101 things I learn ... -
今天看到的,久久不平,恐惧
2010-08-21 12:14 1117《春秋小领主》第169 接着 google -- 张 ... -
The Plan of Reader Worm
2010-06-25 12:33 6581,web spider/snapshot --> WM ... -
制作load动画的网站
2010-02-11 11:06 1010制作load动画的网站 http://preload ... -
亲身经历化龙巷的新闻管制
2010-02-10 23:48 1028刚才我决定睡觉前看看化龙巷, 看到头版头条的一贴:BRT ... -
朗科U217优盘的使用体验
2010-01-28 16:54 2636前段时间老婆在taobao买 ...
相关推荐
9月份亲自出去面试,跑的所有公司,面试官问的问题总结。 没有答案,只有问题。
小红书APP首页测试用例,新鲜出炉
Arcgis engine 9.3 中文环境 新鲜出炉 用AE9.3开发的程序,由于客户要求中文,我用了许多AE 中的很多bean(比如toolbarbean),发布后是英文的。 于是百度,Google,搜AE9.3 中文环境,找了一下午都没有找到。 ...
2015年新鲜出炉SCI期刊(剔除期刊)
世界财富报告新鲜出炉澳洲人最为土豪.doc
房地产 -2022年海南房价地图新鲜出炉 .pdf
【标题】"TotoroVM 原型新鲜出炉" 暗示了一个新的虚拟机(VM)项目,名为"TotoroVM",它可能是由开发者或团队刚刚完成的初步设计或原型。虚拟机是一种软件实现,它可以模拟硬件平台,使得操作系统和其他软件可以在其...
新鲜出炉的2018中科院分区期刊目录。sci,一区,二区,三区所有期刊分类分区表,方便查看
新鲜出炉-2023年国内地级市POI兴趣点数据.zip
有道词典4.3正式版发布 网页版单词本新鲜出炉.docx
Thin Admin Template 后台模板(新鲜出炉国外网站19美金刚买的)
2021年扬州中考数学试题新鲜出炉(含答案).pdf
2021年浙江湖州中考数学试题新鲜出炉(含答案).pdf
新鲜出炉的三相整流器仿真-zuizhongban.mdl 有参考论坛个各位前辈的地方,刚自己学习仿真了三相整流,欢迎讨论交流
在IT面试中,这些问题涉及到的是核心的编程概念,特别是针对Java和面向对象编程的理解。以下是对这些知识点的详细解释: 1. **抽象**:抽象是软件设计中的关键原则,它帮助我们将复杂问题分解为更小、更易于管理的...
新鲜出炉的2018中科院分区期刊目录(包括PAMI,TIP,IJCV)
“新鲜出炉:Ubuntu12.10 菜鸟使用手册(一)”这份PDF文档,应该是为刚接触Ubuntu的新手准备的指南。它可能涵盖了安装Ubuntu、设置网络、使用Unity界面、管理软件、解决常见问题等方面的内容,旨在帮助初学者快速...
在“RPG游戏代码-新鲜出炉”这个项目中,虽然没有提供资源文件,但我们可以从代码层面深入理解RPG游戏的构建原理。 首先,RPG游戏的核心部分通常包括以下几个方面: 1. **角色系统**:角色是RPG游戏的基石,包括...
三相逆变器新鲜出炉-wangke1.mdl 刚仿真完整流器就顺便仿了下逆变器,没想到这样顺利,整流器仿真了一个多周,逆变器一个上午搞定。不过是简单的,电压单环反馈,但是我之前在论坛上看到的都是开环仿真,所以这个...
新鲜出炉的推箱子游戏(C#源码VS2005编译) 设计思路: 采用“棋盘法”用20*18的二维数组显示游戏关卡, 用13张图片(资源文件的main图片)表示不同的状态,用a-m一一对应十三张图片, 用360个由a-m的...