猫眼前端实习一面面经
猫眼前端开发实习岗:一面面经,全程问的很基础,面试官是个声音超好听的小姐姐,但是不知道能不能有二面。。。
以下是问题:
1. 专业不是计算机哈?那你大概都学过哪些内容呢? 我:balabala。。。
2. emmmm。。。计算机网络有了了解过吗?HTTP协议这些? 我:了解过,然后我从http1.0一直讲到http2.0;balabala。。。
3. 说一下http和https的区别?
4. 恩,你提到了SSL层加密哈,具体说一下是怎么加密的?(然后我就把非对称加密说了一遍,balabala。。。)
5. 那你说到了非对称加密后要用非对称加密的随机值来做信息加密,那为什么不每一次都做非对称加密呢?
6. 刚刚提到了TCP,TCP协议说一下?
7. TCP三次握手说一下?
8. 你平时调试代码的时候出错了怎么调试呢?(我:chrome自带的network面板,根据不同的状态码调试)
9. 那你说说常见的状态码吧(我:200,304, 400 ,500一大堆balabala)
10. 什么时候返回304呢?
11. 你平时都是怎么清除这种本地的缓存呢?(我:ctrl + f5。。。我真是这么说的。。。可能是我当时就没理解啥意思)
12. HTTP缓存具体说一下(我:强缓存,协商缓存 balabala)
13. 你提到了***-control优先级比较高吧,那你说说如果我现在有***-control还有Etag,还会从服务器判断是否命中协商缓存吗?(我:我觉得不会吧,毕竟***-control优先级高,直接就拿本地缓存然后返回200就完事了,然后小姐姐表示赞同。。。emmmm。。。)
14. cookie有了解过吗?(我:了解过,然后说了一下cookie)
15. 知道cookie一般用来存什么嘛?
16. 知道cookie的http-only字段吗?(我说禁止浏览器操作cookie,在XSS里面应该是这么用的)然后小姐姐说:呦,还知道XSS呢。emmmm。。。。
17. 然后在石墨文档写了个代码,让***作js的cookie。。。emmm。。。我不会。。。真的,然后小姐姐问我,你没在js写过吧,我说对,然后小姐姐说你应该是在node里面直接用的,我说是的。。。
1、设置cookie,{a:'bb'},过期时间从现在起两天后
18. HTTP分层知道吗?(我:不知道,这个真不会)
19. 数据结构怎么样?(我就知道,计算机网络完了就是数据结构,奈何本人数据结构是真菜,然后我就说了我就学了栈、队列、链表)
20. 那你说说这些数据结构的概念(我:balabala)单链表是啥?(贼感动,小姐姐知道我数据结构不好,就没难为我)
21. 知道哪些排序?(我:冒泡,快排,归并)
22. 分别说一下这几种排序。balabala
23. 然后写了一个代码题:数组拍平
2、[1,2,['3',[4]],5,] --> [1,2,3,4,5] // 我的答案 function flatten(arr) { let res = [] arr.forEach(item => Array.isArray(item) ? res.push(...flatten(item)) : res.push(item)) return res }
24. 追问:解释一下Array.isArray()。balabala。。。。再解释一下这段代码思路。
25. 追问:还知道哪些数组的方法?balabala。。。
26. 说一下JS的原型链吧?能干嘛?
27. 那就手写一个继承吧!
3、父类SuperType,子类SubType // 我的答案 fucntion SuperType(name, age) { this.name = name this.age = age } SuperType.prototype.sayHi = function () { console.log(this.name + '你好') } function SubType (gender) { SuperType.call(this) this.gender = this.gender } SubType.prototype = Object.create(SuperType.prototype)
28. 追问 解释一下最后一行代码。为什么这么用?(我:为了不初始化两次父类的内部属性,减少不必要的开销)
29. 追命无敌问:ES6会的挺多的哈,知道Promise吗?我:balabala
30. Promise的then方法第一个函数参数的参数是干啥的?(我感觉小姐姐问这个是因为我没提到Promise的三个状态,然后我就说了一遍Prommise的三个状态,说了一下resolve的传参,说了catch捕获错误之类的。。。老规矩:balabala)
31. css用的多吗?(我:还行吧)
32. css盒模型说一下?(说了一下IE盒子模型和标准盒子模型)
33. JS怎么获取一个写好的盒子的宽度?(代码题)
4、js原生获取宽度
然后我说是不是offsetWidth啊,然后我听电话那头小姐姐没说话,我感觉好像不对,就没写这个。。。
34. CSS的水平垂直居中?已知宽高和未知宽高的都说一下?
35. 代码题:
5、请把<ul><li>第1行</li><li>第2行</li>...</ul>(ul之间有10个li元素)插入body里面 // 我的答案 var body = document.getElementById('body') var ul = document.createElement('ul') for (var i = 0; i < 10; i++) { var li = document.createElement('li') li.innerText = `第${ i + 1 }行` ul.appendChild('li') } body.appendChild(ul)
追问:你可以再检查一下代码,我一看,wc,getElementById写错了,***。。。多亏小姐姐提醒。然后改了。。。应该是又看到我用模板字符串吧,就说你ES6还真是会的挺多的。
追问:我看你刚才写了一个fragment什么的是吧?我说:恩,但是我看错题目了,我以为要一个一个往DOM里面插入,结果发现不用,直接插在ul里面就行,也能一次渲染,不会引起多次重绘和回流。。。然后就没用。。。然后小姐姐:你是写过那个哈?我说对,然后我说了一下这个东西。(其实就是documentFragment这个东西,统一打包元素的而已)。
到此为止吧,一个小时零三分钟,还有一些其他的好多问题真想不来,本来我还在往纸上记问题,后来发现太多了,还要思考,就没记,就能记住这么多了,要是有想起来的我再补充。。。
然后我问小姐姐给我个反馈,小姐姐说我基础很好,在实习生里面算是不错的了(我个人感觉小姐姐完全是在安慰我),就是数据结构,建议我看看二叉树,挺重要的,我说好滴(其实我是没来得及看二叉树。。。emmmm),然后和我说一周内通知是过了还是没过,我一听,得,估计是凉了。。。心都在颤抖。。。其实这些问题大概我就HTTP分层一点不会,还有两个最简单的代码没写出来。。。其他的应该都是我在balabal一顿操作。。。
个人感触:大家一定要注意,千万不能忽略了你认为某些太简单的问题,真的很可能问,就像我,竟然这种问题都没写出来。。。
总结:面试体验极佳,小姐姐声音很好听,很温柔,五星好评,下次还会再来。还有就是,哪位大佬能给我通俗的讲讲,HTTP分层是啥?
————————————————————
补充1:Object原型对象上都有哪些方法?(我说了Object.ptototype.toString()和definePropoty()
补充2: 归并排序的时间复杂度?
#猫眼##实习##面经##前端工程师#