2012年5月6日在交大参加了百度的实习生招聘笔试,投的是web前端方向。
拿到卷子时觉得好些题目很眼熟,其中一个HTML+CSS布局的问题在网上见过,一个div固定宽度,一个div自适应,要求覆盖整个页面。用浮动布局可以解决这个问题,代码也很简单
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 5 <title>layout</title> 6 <style type="text/css"> 7 #right{ 8 float:right; 9 width:200px; 10 background-color:#ff0000; 11 } 12 #left{ 13 margin-right:200px; 14 background-color:#00ff00; 15 } 16 </style> 17 </head> 18 <body> 19 <div id="right">right</div> 20 <div id="left">left</div> 21 </body> 22 </html>
后来回想这道题目的考点在哪里,觉得出题人可能会看重代码风格,DOCTYPE相关,以及浏览器兼容性的相关问题,偶的一位同学竟然一下子写了三个方案,神牛一枚。毕竟纸上写代码和电脑上是完全两种不同的感受,感觉自己答得很一般。
还有一道题目是说实现一个中文的时钟。如将2012.05.06 12:12:34显示为二零一二年五月六日十二点十二分三十四秒,要求精确到秒。自己的思路是重写了Object的toString方法,如果是number类型的话就通过switch-case语句转换为中文字符,然后写一个displayTime()函数,函数主体是获得当前时间,然后分别得到年月日时分秒,显示的时候分别调用它们重写后的toString()方法将时钟打印出来。时钟的更新当然是通过setInterval(displayTime, 1000);来实现。后来面试的时候问了面试官,他说用一个数组存放中文字符即可,然后通过对应的下标来替换。听完后不得不说自己真的挺笨的,呵呵。
还有一道奇怪的算法题,说是公司里某个部门有200个员工,设计一个算法计算任意一个员工与自己同月同日生日的概率(一年按365天计算)。思来想去也不知道该怎么解决,后来问面试官,他也没怎么说,感觉自己就是在给面试官找茬,真是欠揍。在此求指点。
还有一道简述JavaScript如果实现类,继承,私有变量的题。相信对Javascript熟悉的朋友们都知道主要是通过prototype和constructor这两个属性实现。其中prototype是对原型对象的引用,constructor是对对象构造函数的引用。通过他们即可以实现类,继承和私有变量。
1 function Book(){ //基类Book 2 this.title = "head first"; 3 this.author = "daisy"; 4 this.show = function show(){ 5 window.document.write(this.title+'<br>'+this.author+'<br>'); 6 } 7 } 8 function TeachBook(){} 9 TeachBook.prototype = new Book(); //TeckBook的原生对象由Book构造 10 TeachBook.prototype.constructor = TeachBook; //TeacBook的构造方法为当前方法,个人觉得JS这点很奇妙 11 TeachBook.prototype.addPub = function addPub(p){ //为子类添加新方法 12 TeachBook.prototype.publisher = p; 13 };
还有一题是说在声明变量时不加var的坏处。当时不会,后来看书后了解到,对于不需要初始化的变量是必须要添加var的,否则是不合法的。至于有什么坏处,还请指点。
1 var name="daisy";//合法 2 var name;//合法 3 name="daisy";//合法 4 name;//不合法
最后一题是说说自己最得意的作品,在其中的角色以及有哪些升级方案。这里就不多说了。
关于面试,面试官真心是一位很好很好的人,像个老师一样,整个气氛很轻松。没有要求写代码(微微意外)。在做了简短的自我介绍后,他让我聊起了自己的项目。聊完后面试官竟然觉得我适合去做PM(主要是用户体验和产品设计方面的),跟我说了好些PM应该具备的素养,让我都有点不知所措了,感觉真心偏了好远。不过聊完PM还是很感谢他的,他和我说了很多公司内部运作的过程,让我受益匪浅啊,这些东西绝对是书本上看不到的,聊完后感觉自己真心是笼中鸟,啥也不知道的感觉。后来还是扯回了web前端的一些技术问题,聊了浏览器的兼容(据他给出的2012年3月底的数据统计,国内的IE使用率竟然还高达90以上,IE6这个大bug竟然也还有很大一部分。以前着实被国外的全球统计数据给蒙蔽了,哎,如何让开发人员省心呢),怎么学习前端技术,怎么优化的一些问题。整个过程就像是在交流学习,再次感谢面试官给了我这次机会,结果啥的已经不那么重要了,以后多努力吧,呵呵。