首先表明一下身份:武汉某211大三小菜鸡,自学前端一年多
在12月底的时候,因为身边好几个非常优秀的小伙伴都在投简历找实习,老是听说谁谁谁拿到了哪哪哪的offer,谁谁哪哪几面了。然后自己整理了一下项目,给自己的移动端聊天室补了下文档后,也加入了找实习的队伍。
总体而言经过大概两周多的时间,投了20多家,最后面试了两家公司:vivo前端日常实习和字节跳动前端日常实习(都拿到了offer,最后选择了字节)
关于面试的一些细节,顺序也不是很记得了,在这里凭借印象写一些,算是回馈牛友
在12月底的时候,因为身边好几个非常优秀的小伙伴都在投简历找实习,老是听说谁谁谁拿到了哪哪哪的offer,谁谁哪哪几面了。然后自己整理了一下项目,给自己的移动端聊天室补了下文档后,也加入了找实习的队伍。
总体而言经过大概两周多的时间,投了20多家,最后面试了两家公司:vivo前端日常实习和字节跳动前端日常实习(都拿到了offer,最后选择了字节)
关于面试的一些细节,顺序也不是很记得了,在这里凭借印象写一些,算是回馈牛友
字节跳动一面(50min)
字节一面其实有点自闭的来着,因为有很多东西没有深入去了解,后面多做了一些准备。
- 自我介绍
- tcp三次握手了解吗?为什么不能两次?(插了一句计网没系统学过,下学期才开课,再没问过计网...)
- 为什么学前端?
- 栈和队列了解吗?
- 如何用两个栈模拟队列?
- 对数组 [44, 91, 93, 30, 21, 9, 89] 进行大顶堆排序后,再删除最大值后,数组的排序顺序是?
- 事件委托和冒泡了解吗?怎么获取事件委托的真实元素。
- 你怎么理解闭包
- 下面代码执行结果(考验JavaScript变量提升和函数变量冲突)
console.log('print #1: ', typeof a) var a = 1 console.log('print #2: ', typeof a) var a = '1' console.log('print #3: ', typeof a) function a() { console.log('print #5: ', typeof a) } console.log('print #4: ', typeof a) a() 复制代码
- 父子组件useEffect执行顺序,执行时机
- websocket和socket的底层原理是什么?
- 你怎么理解redux
- 用过哪些hooks
- 用过useLayoutEffect吗,知道useMemo和useCallback吗?(讲hooks的时候前面没提到)
- 你的项目中,eggjs怎么部署的?
- 你部署后是单实例还是多实例?
- eggjs的多进程是怎么实现的
- 写一个异步并发调度器,见博客:实现一个异步并发调度器
- 反问
面完后自闭了😥,点了个外卖都没有很多心情吃,然后晚上hr小姐姐告诉我过了😁
字节跳动二面(65min)
二面由于元旦过了蛮久,一直到1/7才面上,我当时刚考完编译原理考试(hhhh) 二面面试官一直在笑,非常的友好,也非常给力!然后我整个人都很放松,面完感觉自己沟通能力有了一个不错的提升。
不过由于二面问的挺多的,然后过去的有些久了,记得不是很清楚了...(可能有较多遗漏)😁
- 自我介绍
- 项目里用到了eggjs,你怎么学习的egg?为什么选择eggjs?
- eggjs里context对象是怎么确定对应到每一个连接的(有点懵逼)
- react里怎么进行组件通信的,和vue有什么不同?
- 怎么在react里模拟实现vue的emit-on机制(思考了一下,我回答本质上还是通过props)
- react的context用过吗?有什么作用?和redux有什么区别?
- 一般怎么学习技术?为什么选择前端?
- 你有用过哪些UI库?
- 代码运行结果:
如下会输出什么信息,为什么:
function hello() { console.log(name) console.log(age) var name = 'lisan' let age = 18 } hello() 复制代码
- 写一个提示框组件(我用的原生js)
- 针对提示框,怎么保证点击中间的提示框不收起(因为我一开始没考虑到,点击就收起了)
- 针对提示框,怎么利用事件代理和委托来做事件处理
- (算法题)实现函数接受任意二叉树,求二叉树所有根到叶子节点路径上所有节点,组成的数字之和
- 反问
可能也是因为问的挺多的,有些回忆不起来了,暂时就想起了这些。
字节三面(40min)
字节的第三面应该是我发挥最好的一次,全程聊那个聊天室项目,面试官人也超赞!(据说是大leader)
- 自我介绍
- 项目的大致流程,能讲讲怎么使用吗?
- 项目数据库表的设计
- 数据库存储引擎的原理
- 数据库优化的手段
- Redux的原理,你怎么理解Redux
- 前端用redux做数据管理,那么你后端如果也需要进行数据管理呢,你怎么设计后端的数据管理(有点懵逼)
- 为什么做这个项目
- 你这个项目最大的收获是什么
- 项目遇到的难点
- 项目有参考其他开源项目吗?(完全自主设计,借鉴了qq简洁模式)
- 项目里有用到Mysql,为什么用Mysql不用其他数据库?
- websocket的原理(聊了一下复用http的握手部分和对应upgrade里的升级,一面问了没答好,三面会啦!自豪!)
- socket.io和websocket的区别(聊到了socket.io的封装,更进一层,不支持websocket的浏览器会自动切换长轮询之类的)
- 反问
字节HR面(30min)
终于见到一直通知我的hr小姐姐,是个贼可爱贼好看的小姐姐!开心!😆
- 自我介绍
- 你大学的一天一般怎么度过
- 你手上的项目里对你帮助最大的是哪一个?为什么?
- 聊聊你的两个独立开发项目?
- 怎么想到做这两个项目的?
- 看到有做过课表,能聊聊这个课表吗?
- 看到你有做过浏览器拓展,为什么要做这个拓展呢?
- 你能评价一下自己吗?你怎么评价你之前的面试?
- 你有提到别人说你是一个“学习机器”,为什么呢?(卷王本王🙄)
- 为什么想来字节实习,最大的目的是什么?
- 大概入职时间?实习时长?
- 反问(实习生培养机制,大致负责内容,多久能收到回音并提到了自己手上有一个vivo的offer)
同时面对实习期末实训,鸭梨山大,还是步履蹒跚地坚持着把流程一步步走下来。
整体而言,大厂的面试确实很有收获。
也希望自己往后能努力多学习一些内容,补充学习一些计算机网络和os基础知识,同时深入前端开发,成为一名更好的前端开发!
诸君,共勉!😉
全部评论
(6) 回帖