大概是25道选择,2道编程题 选择题很多是闭包,变量提升这类让你选输出的题目,还有就是nodejs的基础等 不过我觉得HR筛选重心不在选择,因为我选择都不太确定,编程题做出来了,也过了,我推测就是编程题占大头。
不过这里要给想去视源的同学提个醒,视源的笔试一旦提交不能更改前面的题的答案,挺坑爹的,而且多选题和单选题混杂,编程题也没有OJ,只能纯写,有一点点语法提示和代码高亮。
一面问了足足一个小时,几乎什么都问到了,搞得我二面都不知道准备什么了 先是自我介绍,然后就说了句从简单的开始,然后就开始了:
标准盒模型和IE盒模型
水平竖直居中的几种方式
两栏布局、双飞翼布局、圣杯布局
问我有没有用过饿了么组件库,我说用过,然后他给我问了个,怎么实现类似饿了么组件库的Toast效果。。我当时直接答了没了解,其实我感觉可以给他硬答一点,比如说动画啥的。。
flex布局的属性,问了三种定位方式有什么不一样,我可能没答完整,加问了我一句,如果想要做一个客服一直固定在窗口右边的效果怎么做,我给他说用fixed定位。
BFC(开启BFC的方式以及BFC特性)
CSS记得好像就那么多,好像还问了几个xx的实现方式,但是我答得不是很好,问的很多实现方式我没答上来。。cvte还是比较注重实现的。
让我说了下Eventloop的执行原理 (这个建议去看视频或者找一些博主了解一下,我看的是这个视频,如何理解EventLoop?挺通俗易懂的)
Promise的调用(我答了同步任务宏任务微任务那些)
async/await 和 promise的关系
如果设置了一个定时器,时间到了是不是就会立刻调用(感觉是问重复了,当然是不会立刻调用啦,原因可以了解一下EventLoop↑)
在项目中有用到哪些ES6语法(箭头函数,set map,let const,promise,扩展运算符等)
展开ES6问了一下(箭头函数的this指向,let和var的不同之处,数组去重es6和es5的不同,扩展运算符的用途)
改变函数this指向的方式(call,apply,bind)
call,apply和bind的不同
闭包(原理,还有它的弊端:内存泄漏)
原型和原型链
有没有用过什么排序算法,说说快排的实现过程
简单介绍防抖和节流
JS算是我比较擅长的部分,可能是这段答出来比较多,所以才有点加分吧。。我个人是感觉它问得挺基础的,没有往深里问一些原理,比如promise.all,new的过程,连防抖和节流怎么实现都没问。
function inorder(root) { if(root.children[0]){ inorder(root.children[0]); } console.log(root.value); if(root.children[1]){ inorder(root.children[1]); } }
完了他还问我算法的时间复杂度,我不知道怎么的脑子一热答了个O(n),其实是O(log2n),估计这里有点小炸。。
HTTP1.X和HTTP2.0的不同
浏览器的缓存方式(强缓存和协商缓存),协商缓存的原理
突然问我如何实现异步处理后端返回数据(就是比如用户上传了图片,后端要异步处理,如何接收后端处理成功的信息),我答了轮询,他问我有没有更好的方式,我当时没找到,结束之后我去查了,可以用websocket。
TCP和UDP的不同,三次握手的原理
有没有了解网络安全防御(跨域,XSS,CSRF),跨域原因以及解决方法,JSONP和CORS的不同,CORS有哪两种请求方式(直接请求和非直接请求),直接请求和非直接请求的不同。XSS和CSRF的不同以及防御方法。
有没有在开发项目的时候解决过跨域(我答了有,用的是Vue的proxy代理,这里没有深问,幸好没深问,我也不会。。)
这些就是典型的八股文内容了,不一定要用,但是必须得背。。
Vue的双向绑定原理
Vue的组件通讯方式
Vue的生命周期及其应用场景(还举了些例子问我应该在哪些生命周期写代码)
watch和computed的不同
Vuex中action和mutation的不同
用过什么Vue插件
vue-router的生命周期
Vue一般都是专门搞原理,有八股文,也有实际应用,反正就是要搞定。。 完了就结束了一面,我挺多没答出来,本来以为要挂了,结果第二天看见过了,还挺欣喜的。。没想到二面是个地狱。。
二面甚至没开摄像头,听起来是一个很和蔼的人,面了大概三十多四十分钟 二面没有自我介绍,首先问了一下我的个人博客项目为什么要用Vue来做,这样会导致什么问题,我一开始答Vue和React的不同,HR说他想问的其实是,Vue可能会导致SEO的问题,作为一个个人博客网站应该要加大搜索引擎的关键词出现率,我说我确实没考虑到这一点,但是我了解了可以***来解决,我也正在进一步学习中。然后面试官还比较满意,并且让我可以多了解一下***方式。
然后噩梦就开始了。。
问了我HTTP1.X和HTTP2.0的不同之处,我以为又得背八股文,我就说二进制分帧,头部压缩,多路复用。然后他问我,知道HTTP1.X是什么分帧吗,知道二进制分帧和普通分帧的区别吗,知道二进制分帧是怎么个分帧呢,我。。。
然后就是,头部压缩的原理,我。。。
然后就到多路复用,问我多路复用的TCP连接数,这个我看过!终于答了一点,然后他就问,那我考你一个问题,一条TCP连接,需要多少带宽?我答不上来,他还给我提示,说让我答出和什么变量相关,我。。。。。。
/** 实现洗牌算法函数shuffle,给定一个数组[0,1,2,3,4,5,6],每次随机抽选数组的n个值,连续抽选不重复已经抽选的值,直到数组抽完,在进行下一轮循环。 示例1: var random = shuffle([0,1,2,3,4,5,6]); random(1); // [1] random(1); // [0] random(1); // [2] random(1); // [3] random(1); // [5] random(1); // [4] random(1); // [6] random(1); // [3] 示例2: var random = shuffle([0,1,2,3,4,5,6]); random(1); // [1] random(2); // [0,6] random(1); // [2] random(4); // [3,4,5,2] **/ function shuffle(arr){ return function(count){ // to do } } const arr = [0,1,2,3,4,5,6]; const random = shuffle(arr); random(1); // [1] random(1); // [0] random(1); // [2] random(1); // [3] random(1); // [5] random(1); // [4] random(1); // [6] random(1); // [3] random(1); // [1] random(2); // [0,6] random(1); // [2] random(4); // [3,4,5,2]
这道题我很顺利做出来了,然后HR也没说什么,直接再给我下一题,是道概率论题目: 一个班里有50名学生,有两名学生同一天生日的概率?
我给他说了思路:一名学生一年里有一天生日的概率是365/365,第二名学生不重复的概率是364/365,第三名学生不重复的概率是363/365,以此类推。。然后用1减去这些概率就可以了。 然后他问我,能大概推算答案是多少吗,我说不知道,他说大概给个数,我因为以前看过这道题,给了97%,然后他问我怎么猜出来的,我真不知道。。。然后他说那就先到此结束吧。。他说大概在两到三天内有面试结果,结果当天晚上就给我挂了。。惨~
不过也是一次奇妙的大厂面试经历,作为只面过三次面试的我能走到大厂二面,其实也是挺欣慰的,当做对自己的磨练吧,再接再厉,勇往直前!
#广州视源电子科技股份有限公司##cvte##前端面经##前端开发实习生#