记2012年百度web前端研发实习生的笔试面试经历

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竟然也还有很大一部分。以前着实被国外的全球统计数据给蒙蔽了,哎,如何让开发人员省心呢),怎么学习前端技术,怎么优化的一些问题。整个过程就像是在交流学习,再次感谢面试官给了我这次机会,结果啥的已经不那么重要了,以后多努力吧,呵呵。

你可能感兴趣的:(web前端)