【字节跳动】前端岗-头条三轮技术面

由于是一下子面完的,量比较大,有些内容特别是聊的内容不太记得了

反思:其实很多都是经典面试题,但是自己懒都没练过233

一面,1小时

一面表现不好,以为自己跪了,没想到还能进二面

自我介绍、聊了聊项目

写个VUE的拖拽组件(vue的api徒手撸不出来,写了个原生的拖拽,不记得属性名用了伪代码,末了加了个节流)

好像有问到VUEX和VUE的双向绑定?(不记得一面有没有问后者了)

让介绍下promise,写了写promise的代码

介绍下promise还有什么api,说了下all,说了race这个api,但是名字一下子想不起来了

让实现一下all,当时忘了(不知道)可以用计数法,写了个setInterval的…

问线性表和链表的区别

写个链表反转,说了可以用递归和非递归,非递归版本写了半天,貌似写的还有bug,写完之后意犹未尽打算写递归版的,面试官说好了就这样吧

二面,约1小时

说下输入url到渲染页面的过程

问async、defer脚本的区别,之前看过文档标准,不过不记得了,在面试官的提醒下想起来了

问事件队列,给了个题要求说明输出,基本答对了,有个地方错了,面试官指正了

聊了双向绑定的问题,面试官问VUE双向绑定的实现,讲了defineProperty和Proxy,面试官出了几个更改数据的情形,问当前版本的VUE能否监听到改的 再给了个原型链的题,也是基本对了,但是和上题一样有个地方搞混了,不过一边做题的时候一边仔细地和面试官讲了下js里面new的过程

实现一个call方法,不能用es6、apply和bind,(⊙o⊙)…第一次写的时候用了caller(后来测试了下,其实caller是只读的)

然后重写了一个版本,面试官觉得ok

讲了下对js的this的理解,面试官讲了下他的理解

考了two sum问题,说了下实现,面试官指出一个bug,修正了,进一步讨论到k sum,说了可以用减治的思路,说到可能可以用动态规划,然后说到贪心,面试官问有什么贪心的思路

(k sum其实答的不太对,k sum减治就行了,貌似没法用动归233)

问有哪些排序?手写个快排就算了吧,没啥意思(…吓尿,手写快排真写不出来)

堆排写过吗?答曰写过,但是现在这样应该写不出来。

面试官说算了,问堆和栈的区别等

问了下对css的了解情况,说了flex布局

面试官画了个布局,让实现一下,用flex实现了

让讲一下水平垂直居中,讲了三种方法(绝对定位、flex、单行inline)

三面,约半小时

三面比较快

先让讲了讲和导师的项目,面试官对这个项目其实有点误解,所以后面打断了我,让讲下页面更换样式要怎么做

后面觉得我讲的太宽泛,我就又细致地说了下怎么划分样式的层次

信息流组件怎么实现,可以用伪代码,我一开始说可以用适配器,然后开始撸代码,最后写成类似策略模式了。。。总之算是展示了下自己对这个需求和面向对象的理解吧

又问了双向绑定,这次让用defineProperty实现一个双向绑定,defineProperty的api记不清了,和面试官说明了下,其他的基本写出来了

面完收了条30天内给消息的短信

发表评论

后才能评论