校招开篇第一次面试——打响校招的第一枪(二)

前言:刚刚更了一面的内容,问到的问题都是前端技术相关的,而这次二面问到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.还有没有什么想问的。

思路:看过很多面经,总结一点就是,别问敏感问题,敏感问题的关键字有:工资,加班等等。

后话:

这次是视频面试,比起一面的电话面试会有更多的打扰因素,所以大家在面试的时候更要注意面试时的环境,不然真的会很打扰面试时的心情,但是对于那些不能改变的部分(我面试时,网速不稳定,面试官说话的声音很卡顿,很嘈杂)就要调整心态,也当是一次身心的修行吧。这次面试的表现不怎么样,但是也是一次很不错的经历,一面让我增加的信心,二面让我深刻的明白自己的不足,我相信待得校招还有更好的表现。最后,各位要面临校招的战友们,一起加油吧~希望大家都能签到自己满意的公司~加油~

原文地址:https://www.cnblogs.com/zllwebstudy/p/5839755.html