字节前端校招一二三(三面挂)
3月8日一二面。
一面:
开始问:学过操作系统,计网,数据结构吗?答:只学过数据结构。(其他两个我有看过书,但保险起见我还是只回答了这一个)
1.进程和线程的概念?进程间通信方式?并发与并行的区别?如果两个线程都访问同一个内存的话,该怎么做呢?
2.tcp与udp的区别?三次握手详细过程以及每一阶段的状态?为什么需要三次?tcp可靠传输的保证?如何区分一个数据报是本次连接产生的还是上一次由于网络拥塞延迟到达的?
3.js数据类型?symbol的应用?判断数据类型的方式?typeof null,[],undefined返回值?instanceOf检测原理?实现instanceOf
4.为啥要提出BigInt数据类型,js中数的表示规范,说具体。
5.js闭包?应用、坏处。
6.js垃圾回收机制,算法。
7.说一说事件循环,然后代码看输出
8.html标签的常用属性?答id,class。寻找dom节点的api?byid,byclassname,queryselector的区别?
9.css的position属性有哪些,具体说说。
10.听说过样式标准化吗?不太了解。各个浏览器的默认样式有区别吗?
11.从一个包含学生成绩数组的中找到成绩第k好的所有学生的id,学生信息如下:[{score:89,id:1},{score:23,id:4}]。
利用计数排序思想,我的代码可能有点瑕疵,成绩好像反了。说说时间、空间复杂度。
12.说说快速排序原理。时间、空间复杂度。
反问:我还有那些地方需要加强,回答说段时间了解的不多,也没啥好的建议,在js方面可以加强。
一面结束后在房间等了几分钟二面来了。
二面:
1.算法两数之和。
叙述原理,时间、空间复杂度。
2.算法最长无重复字符,要求返回具体的字符串。叙述原理,时间,空间复杂度。
3.学习vue多久了?说说v-model,怎么在组件上使用?是什么的语法糖?
4.vue如何监听数据改变。watch,computed,怎么监听深层次的对象。
5.v-if和v-show的区别,使用场景。
6.叙述重排和重绘
7.怎么学习前端的。怎么学习一个新的技术点。
8.script标签的defer和async的区别?多个标签有同一属性时顺序是怎样的,能保证有序吗?
二面结束后问我有时间吗,我愣了一下,然后面试官说如果有接下来的面试是接着面还是换时间,我说如果有的话就换时间。因为我当天11点开面,1点才结束,早饭和中饭都没吃。当天下午hr打电话约了10号三面。
三面:3月10日
面试官是个中年人,挺严肃的,问我有实习经验吗?答:没有,于是开始做题。
(下面的代码我只截了函数里面的部分,声明那些没截,return语句也没截)
1.实现字符串的trim方法。挂在字符的原型链上
2.实现一个深拷贝。调用deepCopy(target)
4.实现模板字符串。
function template(pattern,data) { let len=pattern.length; let res = [] for(let i=0;i<len;i++) { if(pattern[i]==='$') { if(pattern[i+1]!=='{') continue; let t=i; while(pattern[i]!=='}') { i++; } let tmp = pattern.slice(t+2,i); res.push(data[tmp]); } } let result='' for(let m=0;m<len;m++) { if(pattern[m]!=='$') { result+=pattern[m]; } else { while(pattern[m]!=='}') { m++; } result+=res.shift(); } } console.log(result) return result; } template("${name} is ${age} years old",{name:"Jim",age:20}); template('asdd ${tgy} has ${gender}',{tgy:'tgy',gender:'man'})5.返回二叉搜索树第k个数字。(树的定义和建树我就不再写了)
const InoderTravse = (root,k)=> { //let res = []; let result = -1; const travel =(node)=> { if(!node) return; travel(node.left); k--; if(k===0) {result=node.val} //res.push(node.val); travel(node.right); } travel(root); console.log(result); //return res[k-1]?res[k-1]:-1; } InoderTravse(tree,1); InoderTravse(tree,2); InoderTravse(tree,3);一开是我是用res来存储节点,让我优化空间,于是就是上面的。
6.代码看输出并解释。(这道题答错了,我规则记忆有点错乱了)
if ([] == false) {console.log(1);}; if ({} == false ) {console.log(2);}; if ([]) {console.log(3);}; if ([1] == [1]) {console.log(4);};7.js闭包。
8.当声明一个变量时,会存在一个虚拟地址和物理地址,为什么要这样设计,你可以从c/c++方面解释。(这道题我不懂,就说了一个应该是为了余弦为变量分配内存空间吧。)
9.osi七层模型及对应功能。
10.前端跨域方案。
最后说说自己的优缺点,怎么改正缺点,问手上有没有其他offer,答没有。
反问:对我的建议。答:沟通方面可以加强,js加强,多看一些项目,或者实习。(听到这我知道多半凉了,毕竟我是来校招的)。
结语:
今天联系了我的内推人查了一下进度,过了一会老哥跟我说跟hr确认过了的确是三面挂了。 心情异常低落,这是我第二家公司挂在三面了,还有其他不同的公司挂,我已经没有信心了,你们加油吧。毕业季的很多事一涌而来,我的压力好大,无处释放。
大家看了了解一下就行了,也别问我问题了,我就不回复任何人了,就这样吧。拜拜。
#字节跳动##面经##校招##前端工程师#