字节基础架构前端实习一二三面面经
2.10 一面
- 全程没有八股文,没有leetcode题。直接被按在地上摩擦,,,
- 假如现在本地无法实现加法功能,现有其他团队提供的api
await asyncAdd = (a, b, (err, res) => { // 利用网络请求实现a+b,成功结果返回res })
现需要改进该api,利用其实现一个add方法,使其能够实现多个数相加(写主要思路即可)(时间复杂度为logn)function add(a,b,c...) { //Todo }
(疯狂被找问题,主要就是异步执行顺序的问题,最终也没写出来,,,评论区求个大神) - 有很多li标签且顺序不固定,怎么把最后一个class为b的li改为红色
<ul> <li class="a" /> <li class="b" /> <li class="b" /> <li class="a" /> ... </ul>
答:使用伪类last-child。
问:伪类的实现原理了解么?
答:。。。(请求评论区大神) - 有一个类似表格(或者日历)的布局,每个单元格的border为1px,相邻单元格中间的border也为1px,怎么实现?
答:从第二列开始margin-left:-1px,第二排开始margin-top:-1px
现在要实现选择某一单元格会高亮,怎么实现?
答:(由于margin的方***让该单元格的右和下边框被覆盖,所以高亮看不到) 把该单元格右侧和下侧的单元格的左和上边框透明度设为0(脑子已经半浆糊了)
问:下面单元格不难找,那你要怎么选择到该单元格的右侧单元格呢?
答:(艰难思索)那就换种方法,把所有单元格左和上边框设为透明,然后第一行和第一列单独设回来。- 这题感觉自己说了个很笨的方法,肯定有很多更好的实现方法
- 讲讲性能优化,能实际实现的
答:少用js操作Dom,统一修改Dom,少用闭包,改样式能用css不用js,css中不用算术表达式等等
问:这都是代码方面的是吧,那网络方面呢?
答:(不懂、不了解)用http2肯定快
- 之后的提问面试官都是基于我的回答去问的,才发现他竟然做了笔记,,,牛(问了挺多零碎的,记不住太多)
- 用js操作Dom,怎么知道Dom已经操作好了
- 少用闭包我不理解,你看构建工具啥的用的都是闭包,这个你怎么理解的(我背的啊,上哪理解去。开始记忆搜索:我是指比如一个功能,能用块级作用域实现也能用闭包实现,那就最好不用闭包。算过关了)
- http2为什么快
- (也是基于上一题的)html中link一个很大的css文件,导致加载很慢。那用户看到的浏览器加载过程是怎样的,是一直空白么?还是先出现个骨架?还是什么?如果中间有js语句,会怎么样?页面加载会终止么?。。。
(实践证明,光背八股没用了,得真的把过程搞透啊xdm)
2.14 二面
- 自我介绍
- 介绍实习项目,并一起讨论了一波
- 开始八股(感觉面试官拿了本面试题库,真的是从头开始捋):
- HTML:meta标签干什么的,都有什么属性;doctype是干嘛的,都有哪些属性(三脸懵逼,,,)
- CSS:position,display,float都有哪些属性;盒模型;
- JS:es6;map和object区别;(忘了,反正挺基础的都)
- 开始做题:
2.24 三面
- 自我介绍
- 学前端多久了(自我介绍说过了,,,);为什么学前端(自我介绍也说过了,,,)
- 讲一下最近写的项目(基本单项输出,没有讨论什么)
- 开始八股(跟二面神似,我都惊了)
- HTML:语义化标签说出几个;form表单的属性说一说;
- CSS:background的属性;隐藏元素的方法(说了三个之后又问有没有其他方法);
- JS:自己写代码用过闭包么?前端向服务器请求数据,能想到哪些方法?
- 开始做题:
- 反转整数(-321 -> -123; 1200 -> 21)
- 约瑟夫环:
n男(B)n女(G)围一圈,从某一个人开始报数,报到m的出去,最后要剩下n男,即出去的是n个女
例子:n=3,m=2,则符合题意的排列方式为[BGBGBG]