字节跳动前端二面分享

简单的记录一下,最近字节跳动的面试。
1.面试前的状况
在boss上投的简历,三天后收到hr的短信通知,本来是电话通知,但是我的电话最近接不了陌生人的电话。接到通知后,和hr定一下面试的时间。面试当天也是故障百出,我家突然断网停电了(家里有电脑,我就把笔记本放在学校了),结果用手机面了半个小时的基础(稍后总结),因为没有办法写代码,面试官要求更换面试时间,于是我的一面告一段落。
2.面试当天
首先我先记录一下第一次一面的问题。一面是个很温柔的小姐姐,超好!
自我介绍—一定要准备好自我介绍,你说的内容都会成为面试官问你的问题,我说了一个大三接触前端,比如轮播图的实现等,然后面试官就问你是怎么实现轮播的。
position的定位有哪些?
fixed、absolute、relative、static各意思,然后面试官问子元素绝对定位,父元素一定是相对定位么? 不一定,父元素也可以是fixed
flex的布局了解么,它的属性有哪些
flex主要解决一些比较难的布局,比如垂直居中,它的容器属性有:flex-direction、flex-wrap、align-item、justify-content
用定位实现垂直居中
子绝父相,然后设置top和left为50%,然后面试官说这样还是有点问题。后面查了查应该还得设置transform-translateY(-50%)
vue的生命周期
beforecreate、created、mounted、beforemounted、beforeupdate、updated、beforedestory、destoryed
写一个promise对象
这个没答上来就是简单的说了一下promise的含义,知道它的执行顺序。面完查了查不知道是不是写下面的代码(如果是就。。。)
const p1 = new Promise(function(resolve, reject) {
    // 在这里做一些逻辑处理
    // 如果异步操作成功的时候,调用resolve
    if (true) {
        resolve('success');
    } else {
        // 操作失败后我们就调用reject()
        reject('fail');
    }
})

p1.then((val) => {
    console.log(val); // success
}, (err) => {
    console.log(err)
})
数组扁平化
我首先用了es6的flat,但是不支持
var arr=[1,2,[3,4]]
arr.toString().split(',').map(item=>{
return Number(item)
})

我可能写的比较慢,然后面试官问我split(',')返回的啥。我说字符串数组,“1,2,3,4”,后来一想应该是“1“,“2“,“3“,“4”(太菜了😢
算法:二分查找,能写一下么
我说了基本思路,就是首先找到中间值,然后从左边再找中间值,右边也找中间值,知道找到为止,然后面试官让我手写一下,我说我写代码能力不是很强,可能会慢点,我写了一半,才想起来用递归,再去加的方法名,写半截面试官说我知道你的意思了,先这样吧
算法2:找为k值的路径
这也是大家都熟悉的面试算法题了,我就说了一下思路,通过深度优先遍历到子节点,如果找到等于k的路径就返回。
然后我的一面就到此结束了,心想麻烦了面试官两天的时间,有好多不会的(可能我总结的也不完善),估计没二面了,正好要做饭,我妈让我出去买东西,买完之后,手机收到了hr的信息,说面试官再等我,还有二面,我的妈呀,心想怎么每次都让面试官等我,内心无比的。。。
3.就开始了我的二面
自我介绍以及我的歉意,二面是个小哥哥,一看就是技术大佬。二面主要问一些项目,你用的框架等
vue的组件化、模块化、工程化的理解
这是在我简历上有的,所以大家一定要把简历上的内容好好掌握一下。这个答的不好,我从网上搜一下,粘出来。
组件化:一个vue文件就是一个组件。页面上的每个独立的、可视/可交互区域视为一个组件;
模块化的话:一个文件既能实现复用也能分而治之
工程化就是动态的HTML,CSSS,JS分离出来,将前端当成工程进行分析,组织和构建从而达到项目结构清晰,分工明确,团队配合默契,开发效率高等目的。
http请求有哪些各自区别
head option get post  head和get两者差不多,option的是用来查看服务器性能,get和post本质没区别,只是get放在url里,post放在request body里,get需要一个tcp包,post需要两个。
面试官问,那get和head差不多,差在哪里?、
没答上来。后期查阅。
HEAD方法与GET方法相同,但没有响应体,仅传输状态行和标题部分。这对于恢复相应头部编写的元数据非常有用,而无需传输整个内容。
http请求报文
状态码、请求头、请求体   面试官问:请求头包括什么,我说content-type其他没回答上来(基础一定要打牢,现在后悔没好好看请求这方面)
后期查阅:


模块化的方式
我说了AMD、CMD、CommonJS  他们之间的区别,我说commonjs在vue里通过export moduleAMD根据先后顺序加载,在requirejs中使用
字符串倒排(中间不是没执行函数就是没打印出来,面试官还提醒了我,我太菜了)
var str ='abc'
function reverse(str){
    str.split('').reverse().join("")
}
console.log(reverse(str))

最后就是问了一些职业规划,之后是想一直做前端还是学习更多。然后问我还有没有别的问题,我说三面多久通知,然后就第二天也没通知,我觉得应该凉凉。对了,还问有没有写博客的习惯,我发了一个链接给面试官。
总之,这也是一次经验,我一面过了,我就很开心,希望之后能够好好学好基础,在项目上也要多多实践。同时,也引起自己的反思。总之,这个世界没什么好畏惧的,反正我们只来一次。——朱德庸


#字节跳动二面##字节跳动##实习##前端工程师##面经#
全部评论
也要继续准备着,加油!!
1 回复 分享
发布于 2020-03-04 17:30
想问问你是什么时候投的简历啊
点赞 回复 分享
发布于 2020-03-04 20:15
 我的简历还在筛选中,头疼
点赞 回复 分享
发布于 2020-03-05 16:21
楼主二面过了吗?
点赞 回复 分享
发布于 2020-03-07 17:06
字符串反转你都没有return呀
点赞 回复 分享
发布于 2020-03-12 13:32

相关推荐

10-16 14:30
深圳大学 C++
10月15号一面  面了一个小时处女面,面试官体验还很好,自己太菜了基本没问八股问下实习做的什么,具体怎么个流程(因为实习内容跟岗位不怎么相关,我不是很想展开,这里吸取教训,尽量提引导到岗位相关内容以及遇到的问题怎么解决问题)深挖项目(挖的很深,可能是学艺不精,老是没get到面试官意思,但面试官人很好,我尽量挑自己会的说)1. 报文是4kb,应用层缓存是1kb,使用LT和ET模式分别会有什么差异2. 你刚才讲了select poll epoll的三个底层处理方式,如果让你来设计epoll,系统内核要如何处理3. 你的分布式缓存如何通讯,数据是如何同步的(实际上没做同步,只做了负载均衡,默认是相同的数据库,估计是想问类似redis的主从复制,但里面没做不好展开)4.  你的http报文解析如何处理粘包问题5.  你的主从reactor线程池线程是同时处理i/o和业务逻辑吗?有没有考虑分开处理?编程题一道带定时淘汰的LRU之前特意看过带锁的LRU,定时没写出来,因为平时LRU是用C++写的,定时机制用Go写的,不清楚C++生成时间戳和开线程定时触发的语法,而且不是粗粒度的触发定时,估计是要节点开时间戳,一个线程循环监听链表头结点时间写结构体和框架也用了很长时间但基本上没停过,还是写不完(教训是以后要么背下来,要么申请换题)回过头来看,其实基本上问的都是简历上的内容,可能是准备八股和自己模拟面试的时候,看的太广了,特别会很多参考牛友的面试问题,学的广对自己既累又不讨好,比如自己简历没写数据库然后也要把数据库事务还有相关的全部弄懂,以及分布式raft什么之类。教训是按自己的简历深挖,熟悉每一个细节的底层,因为面试官是按你的简历引导发散来问问题,这个编程题也是😂。要是问八股,我就可以将八股联系到自己熟悉的得项目部分进行展开,可惜直接深挖,再沉淀一下,10月17号面腾讯😞
点赞 评论 收藏
分享
评论
6
47
分享
牛客网
牛客企业服务