前言:刚刚更了一面的内容,问到的问题都是前端技术相关的,而这次二面问到js的问题就一个,上来第一个问题就是算法,然后又是计算机网络,计网我之前有刷过一次书,但是时间已经是1个多月前,所以我本身的知识已经有遗忘,而且当时的心态也被各种打击惨了,所以计网的问题也是答得很不好,总体表现就是差。但是这次面试经历对我也非常的重要,它让我清晰明白的知道了我技能的薄弱的一块——算法,同时也激起了我的斗志,接下来的学习重点就是算法啦~真的很痛苦,但是这次再也不要退让了,不把算法啃下来,我就啃我自己,哼
正文:
二面面试题目
1.自我介绍
思路:个人信息+应聘岗位+相关技能+实践经历
2.简单介绍一下做过的项目
思路:就像我一面总结文里说的,尽量不要啰嗦,言简意赅就是最高境界,更详细的思路可以看我上一篇文 (链接在此:http://www.cnblogs.com/zllwebstudy/p/5839518.html)
3.表达验证,异步,文件上传(这些是我说到的实现的功能,然后就引发了下一个问题)
4.如何实现大文件上传,如几百M或者几G的文件
思路:当时是懵掉了,因为我们做的项目有要求文件大小不超过多少,所以没有考虑过大文件上传,只能扯了半天,说不知道了。总结时,去网上找了很多文来看,但是基本是一个调调,在此真的要感慨一 下,网上的文在很多网站都是一模一样,也不知道是谁抄谁的,希望抄袭的网站能够注明原著,不要让人家的心血白费。所以我之后看到这个文(链接在此:http://blog.csdn.net/sinat_29804751/article/details/46876061)还不错,但不知是不是原创,希望不是又一个伤害原作者的网站。还没有具体实现过,但是原理感觉应该是对的,之后会去实践,如果有错再来改正。
5.冒泡排序的时间复杂度是多少?
思路:很不确定的说是nlogn(完全是乱蒙),面试官很耐心的引导我,我想起出来,说是n²(答案是n²)
6.那简单说说快速排序的实现思路。
思路:没答上来,总结看书是知道了,简述如下:首先选择一个轴值,将待排序记录划分为独立的两部分,左侧记录的关键码均小于或等于轴值,右侧记录的关键码均大于或等于轴值,然后分别对着两部分 重复上述操作(即选取轴值,然后小于或等于轴值的放到左边,大于或等于轴值的放在右边),直到整个序列有序。
7.在对话框里5分钟写出冒泡排序算法(当时用的qq开视频)
思路:没答上来,在此写js的代码实现:
function bubbleWay(arr,n){//arr为排序的数组,n为需要排序的元素个数 var exchange = n; //排序从1-n while(exchange != 0){//用0来作为边界判定条件 var bound = exchange;//当前需要从1-bound进行交换 exchange = 0;//初始化exchange为0,表示还没有进行交换 for(var j=0;j<bound;j++){//遍历需要交换的元素 if(arr[j]>arr[j+1]){//如果当前元素大于其后元素,则两者交换 var temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; exchange = j;//exchange记录当前交换发生的位置 } } } }
8.一个人走100个阶梯,他可以走1步或者走2步,问一共有多少种走法。
思路:依然是没答上来,哎,心塞,题思路解如下:
(1)当要走的阶梯为0阶时,有0种走法。(选1步或2步都不能到达)
(2)当要走的阶梯为1阶时,有1种走法。(选1步)
(3)当要走的阶梯为2阶时,有2种走法。(走1步两次或者走2步)
(4)当要走的阶梯大于等于3时,有fn=f(n-1)+f(n-2)种走法。(想象一下,这个人现在站在第n阶梯,他只可能从n-1或者从n-2阶梯走过来,由此再往前推,n-1阶梯只可能从n-1-1或者n-1-2阶 梯走来,所以这是一个递归调用)
综上所述,100阶梯的走法为f100=f99+f98=....种走法。(写了算法准备算一算的,然而被卡死机了。。。反正大家就知道原理好了,应该不至于变态要算出结果来。。。。)
9.http状态码中200代表什么?304代表什么?
思路:200代表成功,304代表缓存可用。
10.http报文表头里指示缓存的字段有哪些?
思路:cache-Control,pragma,Expires,网上找了一篇文,写得挺好的(链接在此:http://www.codeceo.com/article/http-cache-control.html)
11.tcp连接时需要几次握手?断开需要几次挥手?叙述一下断开时的情况。
思路:3次握手4次挥手。(ps:我的WiFi名就是这个~)断开时,(1)由客户端发出连接释放报文,并停止发生数据,主动关闭tcp连接。
(2)服务器端发出确认,这时的tcp处于瓣关闭状态,客户端不能发生数据,当任然能接受服务器端发送的数据
(3)服务器端发出连接释放报文,等待客户端的确认
(4)客户端返回确认,等待一段时间后,断开连接
12.tcp的MTU是多少?(此处面试官说的是这个问题,但是之后有大牛指出,MTU是链路层的概念,所以特别说明,MTU是链路层概念,MSS是tcp的概念)
思路:1500字节 这里有个和MTU相关的概念是MSS,看到一篇文讲得挺好的(链接在此:http://blog.csdn.net/yygydjkthh/article/details/7359281)
13.什么是闭包?什么是原型?
思路:又是经典的必考问题,闭包和原型是js里面很重要的概念,面试被考到4次的3次,不会的小伙伴在网上搜文来看,讲得很详细,不再赘述。
14.看你用过gulp,主要是用来做什么?(答:压缩图片)除了压缩图片还做过什么?(压缩js,css,添加前缀)那为什么要压缩js文件?
思路:gulp教程很多,我放一个我自己很喜欢的(链接在此:https://github.com/nimojs/gulp-book)至于为何压缩js文件,主要说到两点:(1)减少js文件大小,方便传输,提高传输速率(2)保护 源码,不被窃取原创知识,保护原创从我做起。
15.对于前端工程师的看法。
思路:有事儿说事儿,无事退朝。
16.还有没有什么想问的。
思路:看过很多面经,总结一点就是,别问敏感问题,敏感问题的关键字有:工资,加班等等。
后话:
这次是视频面试,比起一面的电话面试会有更多的打扰因素,所以大家在面试的时候更要注意面试时的环境,不然真的会很打扰面试时的心情,但是对于那些不能改变的部分(我面试时,网速不稳定,面试官说话的声音很卡顿,很嘈杂)就要调整心态,也当是一次身心的修行吧。这次面试的表现不怎么样,但是也是一次很不错的经历,一面让我增加的信心,二面让我深刻的明白自己的不足,我相信待得校招还有更好的表现。最后,各位要面临校招的战友们,一起加油吧~希望大家都能签到自己满意的公司~加油~