字节跳动前端实习面试经历分享

1. 前言

这次投的字节的前端岗的实习,第一天上午投的当天下午hr就打来电话预约面试时间了。因为过年放假的原因只好约在了第二天(后面没空了),真的有被吓到…本来还想多点时间准备的,这下只能是硬着头皮上了。面试前还是挺紧张的,因为感觉自己几乎没准备,到时候一问三不知挺尴尬的。

2. 面试内容

2.1 操作系统

  • 进程和线程
  • 进程间通信方式
  • 解释锁的概念、锁的几种类型
  • 进程的调度算法(Linux用的是哪种?)
  • 中断类型

2.2 计网

  • 介绍一下TCP
  • 三次、四次握手原理&过程
  • TCP面向连接具体是指?

2.3 数据结构

  • 单调栈的应用(当时没想到,直接n^2时间复杂度暴力求,后来老师提示要用单调栈减少时间复杂度)
给定数组arr,存放的是每一天的气温, 返回一个数组res,满足res中的每一项代表对于每一天,还要至少等多少天才能等到一个更暖和的气温;如果等不到那一天,则填写-1
// getNextWarmer([5,3,1,2,4]) 返回 [-1, 3, 1, 1, -1]
const getNextWarmer = (arr) => {

};
  • 二叉树的遍历类型
  • 求二叉树的后序遍历

2.4 JS&CSS&Vue

  • Promise
function a() {
  console.log('a');
  Promise.resolve().then(() => {
    console.log('e');
  });
}
function b() {
  console.log('b');
}
function c() {
console.log('c');
}
function d() {
  setTimeout(a, 0);
  var temp = Promise.resolve().then(b);
  setTimeout(c, 0);
  console.log('d');
}
// 请问输出是什么?
d();
  • 问了之前做过的项目的细节
  • JS的几种基本数据类型
  • 组件之间的通信方式
  • 盒布局
  • H5的新特性

3. 感想

整个面试流程持续了一个小时,整体感觉还可以,比想象当中要顺利一些。面试官人很nice,不会为难你,不会的就老实说不会老师也说没关系。基本上会根据你简历上写的出彩的地方问你(比如我说我的基础课成绩还可以,他就问我哪几门学的不错,我说OS和编译,然后就问了很多OS的概念)。当然因为面试的是前端岗的缘故,所以计网和JS, CSS, Vue肯定也是要考到的。算法和数据结构这块没想到面前端也需要,我和老师说我算法可能比较弱,老师可能就没出难题为难我2333.


经过这次面试最大的感悟就是我的基础实在太不扎实了。首先是很多基础知识比如OS和计网的内容,学了就忘,很多都只能说个大概,一旦深究下去就不知道了,也就是知其然不知其所以然。老师会问很多概念性的问题,而光靠死记硬背是没用的,因为它背后的原理也会考到,而这些在我平时校内的学习中往往是会被忽视的(不在考点内)。另外,因为我的前端技术栈都是在项目过程中边做边学的,主要是学Vue,顺便看看CSS和JS,所以JS的基础很差,或者说是基本没系统学过,一问三不知,场面挺尴尬的——一个写前端的人居然不怎么会JS。这也怪不得别人,只能怪自己基础打的不牢。而且因为第一天投的简历第二天就面试,所以基本是零准备就去面试了,自己基础的短板算是暴露了个一干二净。


最后问了老师几个问题,其中就有一个是向老师请教了关于前端的学习路线。老师也说最重要的还是基础。因为大学里基本上不会有课程专门去教前端方向的内容,大家基本都是靠自学,而自学就很容易忽略基础问题。在掌握了基础知识和一些框架之后,可以多往深了学,比如设计模式、最近很火的“大前端”等,在之后也可以考虑全栈,不过这一切都是建立在良好的基础上的。作为在校生,把基础打牢是最最重要的。还有就是不管什么岗位,算法和数据结构都是非常重要的,一定要重视起来,多刷题。


很感谢字节给了我这次的面试机会,让我看到了自己的很多不足,增加了面试的经验,也让我知道了该往什么方向努力。

你可能感兴趣的:(前端,字节跳动,面试,算法,数据结构,vue.js)