百度贴吧实习生面试总结
LeeSir 发表于 2015年04月20日 16:03

一面师兄带我上楼的时候看到我简历就问了一句,我是不是在华科读过双学位,我说是的,然后立马问师兄是不是华科毕业的,师兄说是,比我高一级,然后就感觉很开心,面试也放松多了,遇到不会的题师兄一步一步指导我,真的很感动。

师兄问的比较基础的题目有:js跨域问题解决方案、css盒模型、css水平和垂直居中的实现、HTTP状态码。比较有难度的题还是this的问题,原型链的问题,另外问了两到算法题。

第一道算法题:有一个数组,由100个字符串组成,随机取50个不重复的字符串。

表示很久没看算法了,本科通信专业对算法研究也很少,当时回答的办法实在太low就不说了,回学校在室友的指导下学到了一个不错的算法是这样的: 1.生成一个0到99的整数随机数i1 2.取数组array中下标为i的字符串,和array[99]交换位置。 3.生成一个0到98的随机数i2,将array[i2]和和array[98]交换位置。重复以上步骤50次。 4.array[50]到array[99]即为随机抽取的50个字符串,并且不重复。 代码如下:


第二道算法题:将两个js字符串数组合并,并取出合并后数组里的重复元素。

当时回答的一个算法是这样的,将两个数组直接合并,然后用sort()函数排序,再进行一次遍历,将数组中的每一个元素与它后面的元素进行比较,相同则删除一个。师兄不是很满意,觉得时间复杂度有点高。我感觉师兄不满意的原因应该是sort()函数本身事件复杂度就不低吧,或者师兄不希望我用现成的排序函数来实现。不过回来之后暂时还没想到别的办法,先实现一下我那个算法吧,希望后面能找到更好的算法。