简单的面试总结---内含面试题目 | 掘金技术征文

2,160 阅读7分钟
纸上得来终觉浅,绝知此事要躬行。

面试是大家都无法避免的一个话题。我所在的公司是一个不算小的公司,在这个公司做外包两年,转正一年。在金九银十面试的季节里也按奈不住想去面试一下。面试的经验除了现在呆的公司再也没面试过其他公司。在这里没有什么BAT,没有什么美团、小米等大公司,只是单纯的想写一下本次面试的过程。

我面试的公司是一个搞互联网金融的小贷公司,据说是外资投资,福利待遇很好。不过是刚起步招聘的是核心成员,要求相对很高。由于是一个刚起步的公司技术面和HR面都是同一个人,面试我的是一个全栈开发工程师。

长话短说,下面是我面试时面试官所问的一些问题:

1. 自我介绍

自我介绍可以说是在正规公司面试流程的第一步,公司了解一个人就是先从你的自我介绍开始。在这个阶段,我只是简单的说了一下从毕业(15年毕业)到现在,在公司做的一些大型项目和用到的一些技术。这个根据个人不同的情况自由发挥,在此不做大篇幅的介绍。

2. 技术问答

2.1 Vue、React、smarty

在8102年Vue、React、Angularjs三大框架横行的时代,我的面试官也提出了一些问题。提问了Vue的生命周期子组件和父组件之间的传值,模拟了一个修改数据的场景问我是在哪个生命周期去调用。

由于我在简历上写了我也用React开发过,所以面试官就问我Vue和React相比较各自的优缺点。在这个问题上我只是简单的说了一下Vue和React的特点,主要说了一下自己的感受并没有深入的去比较过他们之间的差别。

如何理解Vue,Vue与smarty模板的差别?面试真的能让人大开眼界,不仅可以了解自己的不足还可以举一反三的对比各种技术。面试官如果不问我这个问题我还没有比较过这些东西,后续如果有时间我会把他们之间的差别介绍一下。

2.2 怎么理解http是一个无状态协议?(卒)

作为一个优秀的前端网络工程师,了解基本的http知识是很有必要的,但作为一个前端菜鸟的我忽略了这方面的知识我检讨。

在网上查阅了一些资料以后明白为什么说http是一个无状态协议,通俗的讲无状态就是客户端请求数据,服务端对这个请求不去记录、不去关注。若我理解的有偏差欢迎各位大佬给我留言沟通交流。

2.3 如何理解 DOCTYPE

面试官突然问我这个问题一下把我搞蒙了,这个问题感觉已经是一个被淘汰掉的问题,我接触前端有3年了算不上很高深,没有使用过刀耕火种的技术去开发前端网页。对这个问题没能回答的上来。只是说它是告诉浏览器是使用了那种语言规范。

在网上找到了很多关于这些方面的介绍,可以说前端飞快的发展但是也不要忘记最基本的知识。

2.4 get和post的区别

经典面试题之一,凭感觉自己回答了一下但是不是很深入,在这里有一篇文章解答的很好。一个优秀的前端不仅仅只在于表象,要有专研精神把某一个问题了解透彻这样才能有进步。

2.5 跨域问题

经典面试题之一,网上资料一大把。

2.6 HTML5、CSS3

在8102年HTML5和CSS3已经得到很多浏览器的支持学习好新的规范也是前端必备之一。了解并使用HTML5的一些新特性,是很重要的一块。我的面试官问了我H5的新特性都有那些?css3的选择器有那些?css3选择器它们之间的权重和优先级?(感觉问的应该是css的选择器)。如何画一个类似心电图的线?

2.7 ES6

简单的说一下ES6新增的方法,除了promise还有那些异步方法,解构的原理。

2.8 移动端和PC端

如何适应移动端不同分辨率不同尺寸,PC端适配移动端,自适应和重新开发移动端的优缺点。根据不同的场景去使用不同的方法,具体情况具体分析。

2.9 算法

大数据时代都要考一些算法?下面是面试官的考题分析给大家,希望大家能帮我指点迷津。

一个整型数组,将其划分为相同的N(整数)个切片,每个切片加总和是相同的,是否可以找到而已的切片,如果找到就找到了所谓的N等分点,输出true,否则输出false。
如:N=4,输入数组[2,3,5,1,2,2,1,1,3],切片结果为:[2,3],[5],[1,2,2],[1,1,3],也就找到所谓的4等分点,结果输出为true。请写出一个方法实现这个操作。

这个问题的主要思路就是:先求出平均数,然后依次去取数组里面,加起来等于平均数的元素。最后就一定要刚好数组取完了,分片的数量也等于传入的n。

/** 
 * @description 是否能够找到指定数组的N等分点 
 * @param { Array } integerArr 整型数组 
 * @param { Number } n 几等份 
 * @return { Boolean }  
*/
function isFindAverage(integerArr, n){ 
    if(!integerArr || !Array.isArray(integerArr) || !(n - 0)){  
     // 入參不符合要求  
     return false; 
}
// 如果总和不能平均整数,则一定不能平均分片 
const average = integerArr.reduce((prev, curr) => prev + curr) / n; 
if(average !== parseInt(average)){  
    return false; 
} 
// 可以分为几片 
let result = 0; 
// 当前分片的总和 
let total = 0; 
for (var i = 0; i < integerArr.length; i++) {  
    // 相加刚好为平均数,则去除数组符合条件的整数,并增加分片数,从头开始再相加  
    if(total + integerArr[i] === average){   
        result++;   
        integerArr.splice(i , 1); 
        i = -1;   
        total = 0;
      }else if(total + integerArr[i] < average){   
        // 相加小于average 则继续循环相加   
        total += integerArr[i];   
        integerArr.splice(i , 1);   
        i--;  
      } }; 
       // 分片长度为所传n 且 数组必须更好长度为0 
        if(result === n && integerArr.length === 0){  
            return true; 
        } 
    return false;
}

3. 面试官的回答

跳槽可以说是一个很重要的选择,到最后面试官一般会问一下是否有什么想了解的。其实在面试之前,面试者就应该对一个公司简单的了解一下。在网上查找一下这个公司的基本情况,从招聘简介中也可以看到公司的一些情况。当面询问也是一个很好的途径,毕竟面试是相互选择的。在这个时候可以询问一下自己想了解的或者不明白的,可以询问刚才的技术问题。其他的因人而异。

4. 总结

以后的前端工作不再是简简单单的切图仔的工作了,浏览掘金的用户前端开发肯定不是简简单单切图的。从面试的来看企业招人的要求提高了,作为开发者也要相应的提高自己的技术,既要巩固基础知识,也要学习新的知识。一个合格的开发者要不断的学习,没有一个行业能够一劳永逸。其实面试也是巩固自己知识的一个途径,隔一段时间去面试一下不仅可以了解其他公司所使用的技术,所重视的方向;同时也是对自己学习的检验。文中如果有什么纰漏请各位大佬帮忙指出一下。


路漫漫其修远兮,吾将上下而求索。


秋招求职时,写文就有好礼相送 | 掘金技术征文