百度web前端开发实习生面试经历

前几天面了百度的前端实习职位。一面。时间大概是50分钟。面试官是位很帅气的小伙子,非常友好的一个人。进门的时候他让我等一会,我瞄了一眼他的电脑屏幕,发现他在coding……

9点50开始的面试。

面试官:自我介绍一下。

我:blablabla。

面试官:javascript的类型转换(比如"2"*1, "a"*1)。

我:javascript会调用valueOf来转换为一个基本数据类型,在这种情况下,如果javascript不能通过valueOf转成一个number,会尝试调用toString,然后再转。实在无法转就只能NaN了。

面试官:说说类的创建、继承和闭包。

我:new一个Function,继承通过prototype。超类和子类可以通过子类的prototype=new 超类(),然后把prototype的constructor指回子类。闭包是一个变量作用域的问题(这里我也不是特别清楚,随便说了些)。

面试官:说说get和post请求的区别。

我:1.参数形式不同;2.发送数据大小限制不同;3.在后台转码时不同,post可以简单地修改编码方式来避免乱码,get不可以。

面试官:Get请求最大能多大。

我:几K吧,2K?

面试官:你猜的?

我:。。。嗯。

面试官:说说事件绑定。

我:W3C是addEventListener,IE是attachEvent。

面试官:这两种事件绑定有什么不同。

我:。。。。(真心不知道有什么不同,乱说一气,难道是绑定事件执行的先后顺序不同?)。

面试官:这两种绑定还是有很大差别的。

我:。。。。是的是的,之前没有了解过。

面试官:说说事件冒泡的机制。

我:blablabla。

面试官:如果上层元素想知道到底是从哪个元素起的泡,怎么搞?

我:Event的target属性吧。

面试官:不是,再想想。

我:真心不会。。。(面试官也没告诉我答案,整个面试过程中感觉这位面试官侧重于指引你自己去找寻答案,不会告诉你答案的)

面试官:做一个图片轮播的脚本。

我:blablabla(总之就是通过父元素设置overflow为hidden,position为relative,然后几个图片列表修改他的left值。因为之前我写过一个,所以我还说道了如何实现动画序列,比如点击一次向左,一次向右,再来一次向左,动画会依次执行。)

面试官:图片加载比较慢,你这个轮播组件怎么解决。

我:new一个Image对象,然后注册onload事件和src属性,都onload完毕了再显示,此前显示一个占位符。

面试官:如果图片很多,有两万个,怎么办。

我:按需加载,用多少加载多少(然后讲了我的实现思路)。

面试官:但是用户浏览了很多张图片会越来越卡。

我:把之前看过的图片从dom里删掉,来释放内存,但是要是用户回头又看之前看过的就比较麻烦了,不晓得这个图片该往哪里插入了。

面试官:是的,这道题我不告诉你正确答案,你可以好好想想(面试结束后面试官让我看了百度图片搜索的例子)。

我:好的。

面试官:你后台用哪个语言最多?

我:java。

面试官:Why java?

我:好用。而且我发现其实大运算时跟C++的效率也差不多。

面试官:还是要比C低一些的。

我:嗯。

面试官:用java写网站还是客户端?

我:网站。

面试官:用框架吗?

我:看需求,需求简单就用servlet可以了。

面试官:说说servlet的生命周期。

我:blablabla。

面试官:前台怎么写。

我:。。。JSP<%%>不就行了。

面试官:我知道。我问还有其他方案吗?

我:我们现在用模板引擎,比如velocity。

面试官:讲讲velocity怎么写。

我:blablabla。

面试官:和JSP比,优势如何?

我:速度快,写起来简单,而且好看。

面试官:应该不会比JSP快啊。

我:(这个问题我们争论了好久,面试官是没有用过velocity的)。

面试官:velocity可以自定义标签吗?

我:可以自定义指令,每个指令其实对应的就是一个java类。自定义指令要继承Directive类。

(然后问了些MVC,此处不表)

面试官:(因为我说道这一年过来都在写后端,针对spring做了一层浅封装)说说你的封装里DAO怎么实现的。

我:泛型+模板设计模式。缓存是装饰器模式搞得,装饰的是不带缓存的类。

面试官:那表的结构已经事先定好了吗?

我:对的,通过反射获取类属性,然后转换为sql,比如loginTime转成login_time,类名UserData转成user_data。这个要事先商量好才可以。不遵守约定就没法搞了。

面试官:缓存用什么实现的。

我:Ehcache。

面试官:和memcache差不多吗?

我:没错。

面试官:更新策略是什么。

我:LRU。然后get做缓存,update和delete都直接删除对象。

面试官:用什么做key?

我:id。

面试官:说说缓存怎么避免并发下脏读等不一致问题。

我:我的类都是单例的(我傻逼了,单例和并发有关系吗?面试官后来也纠正了我这个错误)。读是没有问题的,写的话我没有做处理,感觉ehcache自己内部做了处理吧,比如代码同步,或者用concurrenct包下的类。

面试官:。。。。(这道题我没明白他要问什么,他也没明白我在说什么。。。好混乱)不纠结这个问题了。数据库连接池怎么实现的。

我:直接用的DBCP。

面试官:我那时都是自己写的。

我:。。。(心中默念:牛逼)。

面试官:好的,有什么问题想问我的。

我:百度是弹性工作制吗?Web前端部门可以接触到其他技术吗?

面试官:弹性工作制,我们一般都是十点钟来上班(笑)。Web前端部门以写JS为主,会接触到Controller的编写,不过我们是用php的。也会接触到服务器的配置和web工程的部署。不过大部分时间都在写JS上。

然后我们就互道Goodbye了。

我的处女面,就这样献出去了。

 

第二篇:百度实习生web前端开发工程师面试经历

想不到自己这么快就开始写面经了,这次的面试谈不上失败,也谈不上成功,也就写出来给大家一个参考和教训吧!

我这次是通过一个学长内推到百度的“商务搜索部”的web前端开发方面的,HR部门提前通知了我什么时候面试,因为我学校不在北京,所以就只好电话电面了。提前没日没夜的准备了好几天,因为百度的要求很多,比如要精通CSS和javascript,还要熟悉数据库,熟悉一种后台开发语言,最扯的是“对用户体验有深入的理解”,为什么扯呢,后边再说。

我很久就做网站了,不过都是开源的,所以自己去有想法写,也是最近一个学期的,所以开发经验必须的不丰富。写完简历之后,就开始复习以前看的一些书籍了,尤其是js还有web标准以及网站重构的东西,另外花了一半的时间去看了下以前看的用户体验以及设计方面的东西,还有GUI设计……

面试的时候,面试官是个男的,听声音大概不到30岁,后边也确实证实了。说话并不是传说中的笑眯眯很随意,有些沙哑和低沉。

第一个问题是介绍自己,balala的介绍完,就问了一个让我到现在还在无语的问题:常见的数据结构有哪些?晕死啊,前端上没有这个要求啊,就算对算法有要求,也不至于去操作底层吧。我回答说有链表、堆栈、树。面试官说,好,那你给我解释下B树。我了个去……直接傻过去了,我是万万没有想到会问这个的,balabla解释了一堆,最后又扯成了数据库索引,然后这个题目就杯具了,说白了,我B树方面的东西已经忘记完了,因为考虑自己以后要搞前端,所以数据结构和算法就没有再去研究!所以建议大家,去这些大公司的,最好还是对常见算法和数据结构有比较好的了解!

在这个题目杯具了之后,就问cookie和session的区别……这个我知道,回答了,不过听起来人家对我的回答并不是很满意,中间打断过一次。

然后问我会不会ajax,这个算是前端技术,但是我用的很少,我就照实说了,说我用不多,只知道是异步刷新,后边又问说知道javascript的一个什么东东来着,没听说过,就说不知道,这个记得,一定要诚实,不然撒谎的话,最后吃亏的一定是自己!

又问我用的哪个javascript的库,我说jquery,然后就没有下文了~~~在这儿的时候,我差不多在心里确定了,这哥们是做后端的!!!我那个囧啊,今天看来出师不利啊!后端和前端虽然说都是做网站的,但是相差还是太大!在一起就没什么好聊的。

下来就问我项目经验了,说看简历我做过很多项目,感觉最成功的项目是什么(看过很多面经,貌似百度都会问到这个问题), 我说有三个,然后开始说第一个,第一个是原来和同学做过的一个web方面的分析工具,叫bingker网络安全工具包,然后他就问我说里面有个杀毒模块算法是怎么实现的?晕掉,这个太囧了,当时算法的确是我们一起讨论的,但是代码实现我没有参与,我就给解释说这个算法是用特征码对比技术实现的,不过听起来他似乎也不是很熟悉这个,我说了半天,他只是嗯,也没有反驳没有去打断,这个算是过去了~~~

下来就问说做过的网站里有没有没有用非开源程序实现的,我了个去,现在貌似大公司都是用的开源程序啊,虽然我们改动了很多,但是这么一问,只能说没有了。

然后呢,就没有然后了,前端方面的东西就都没有问,他说你还有什么问题吗?我问他说,那你们对GUI和用户体验都是怎么做的呢?他说,这个公司专门有个部门来搞,他们不管的。言外之意,你去了,也就是堆砌代码,有想法?一边写代码去。所以我前面说的,看了那么多设计方面的还有重构之类的书,都似乎是白看了,或许你去了有想法也不会被实现。恩,这个想下也是正常,公司注重的是商业,并不是你的这个想法是不是够新颖吧!所以大家看人家的要求的时候,就好好关注下前面提到的各种技术,比如js、css、sql、数据结构之类的,后面说有啥创新精神啊之类的全部忽略好了~~~暂时是这个看法,不知道别的公司怎么样了~~~

再后来就没后来了,也没有电话没有任何通知,当时有一个和我一起面试的同学,他当天就接到电话通知二面了,据说面试他的是一个搞前端的,丫,起码有的聊啊!

总的来说还是哥太水了…………囧,好好学习技术吧,以后好好堆砌代码才是王道!

总结起来,这样的大公司分工太明确,如果想着去学习各个方面的同学,要好好想清楚了!