字节跳动前端实习面经(三轮技术面+hr面)2020.12

我的背景

本人研二,科班,学前端时间四个月左右,有作过react小程序,可是对react的理解不是很深。有一段四个月的前端实习经历,用的是vue。投的字节跳动北京的base。css

一面 60min

最近在学什么?node.js,为何要学node.js,讲一下你学到node.js的哪些知识前端

常见数据类型?
ES6有哪些数据类型,set和map区别?set放NaN会有几个?NaN全等于NaN吗?答不全等,问那为何set里面只能放一个vue

问输出,考察this指向:node

// Q1
var a = 1;
function print () {
 console.log(this.a)
}
​
print()
// Q2
const obj = {
 a: 2,
 print: function () { console.log(this.a) }
}
obj.print();
​
// Q3
const obj = {
 a: 3,
 print: function () { console.log(this.a) }
}
​~~~~
const foo = obj.print; 
foo()
​
// Q4
const obj = {
 a: 4,
 print: () => { console.log(this.a) }
}
obj.print();
​
// Q5
var a = 5
const obj = {
 a: 6,
 print: () => { console.log(this.a) }
}
obj.print.call({a: 7});
​
// Q6
function Person () {
 this.a = 8
 this.print = function () {console.log(this.a)}
 return {a: 9}
}
​
const p = new Person()
console.log(p.a)
console.log(p.print())
​
// Q7
'use strict';
var a = 1;
​
function print () {
 console.log(this.a)
}
print()**

判断数组的几种方法?为何要用Object.prototype.toString(),react

数组的.toString()不行吗,输出什么git

讲一下事件流,怎么阻止冒泡?如何移除事件绑定?github

flex常见属性,如何实现相似快手这种视频列表的瀑布流布局(一行两个) flex:1的含义面试

又讲一下你以为本身写的最好的一个组件?ajax

编程题:算法

  1. 什么是面向对象?面向对象特性?与面向过程的区别?
    把大象放进冰箱 分别用面向对象,面向过程,函数式编程实现。
  2. 求二叉树每层的最大节点,放入数组输出。(须要本身构造一棵二叉树去验证) 问优化:怎么只用一层循环实现层序遍历
  3. 实现复杂版本的bind,可new可继承
// 可new可继承版本的bind
  Function.prototype.bind = function (context, ...outerArgs) {
      let that = this;
      function res (...innerArgs) {
        if (this instanceof res) {
          // new操做符执行时
          // 这里的this在new操做符第三步操做时,会指向new自身建立的那个简单空对象{}
          that.call(this, ...outerArgs, ...innerArgs)
        } else {
          // 普通bind
          that.call(context, ...outerArgs, ...innerArgs)
        }
      }
      res.prototype = this.prototype //!!!
      return res
    }

其余:问了实习项目,主要关心作的项目的做用和难点

一面总结:一面问的仍是比较基础的,算法和手写都是常考的类型,可是面试官除了前端相关的知识以外上来就问到面向对象和面向过程的思想,以及函数式编程,说明面试官仍是比较注重编程思想的。

二面 50min

跨域,须要解释具体实现过程

react和vue的区别

vue 路由,hash和history的区别,大家项目中是怎么进行状态管理的,怎么配置路由的?

常见的HTTP请求以及每一个请求的做用?GET和POST的区别

ES6 ,ES7新特性?

前端安全措施,常见的安全问题,XSS?CSRF

https ca证书的做用,SSL层的做用

路由切换页面的原理??

vue和react的区别?

问输出:

// 1.
a = 100;
let a;
a = 10;
function test(num) {
console.log(a);
 a = num;
}
console.log(a);
test(5);
console.log(a);

// 2.
const a;
a = 10;(会报错)

编程题:

  1. 实现一个函数,将输入的数组转为链表,并实现一个方法向链表指定位置插入值
  2. 两个无序数组合并成一个有序数组,问时间复杂度。 延伸:快排和冒泡排序的时间复杂度,使用场景
  3. 实现toFix函数

二面虽然问的没有很难,但本身答得不是很好,跨域和安全也都答不上来,过久没复习全忘了,手写题答得还能够。原本觉得但愿不大,结果面完以后面试官马上问我有没有时间,要继续三面。 结果三面的面试官没有时间,改到后天了,还能有机会再复习一下

三面 80min

你知道的数据结构有哪些?

数组是数据结构吗?不是,那为何?什么是数据结构

你刚刚说到了堆,堆是一种新的数据结构吗?不是,是彻底二叉树。什么是彻底二叉树?

树和图的区别? 图的应用场景?

react生命周期,忘记了,说了vue的,各个生命周期的做用?

网络模型以及每层的协议?
这里写图片描述

CSS:

css动画的实现方式?具体一些
position每种属性的做用

如何尽量发现代码中的bug,有没有一些工具去辅助

编程题:

  1. 说一下instanceof的原理,实现一下
  2. 知道map方法吗?实现一下。 reduce和基本版都写了
  3. 实现ajax,至少实现get和post方法。这里深挖了get和post具体的传参方式以及ajax中具体是如何实现的
  4. 实现一个模态框组件,用vue和react都可(要能传递肯定取消事件函数,有遮罩,居中)

其余:

项目难点和收获

对哪一种框架比较熟悉

别人的评价

自身的优势和缺点

压力最大的时候?怎么排解压力

你对于之后前端学习的规划?

三面结束后,过了20min HR小姐姐就给我打电话约了下午HR面

三面问了足足80分钟,面试官从数据结构,计算机网络,js原理,到原生API实现,组件实现,比较注重面试者对实现原理的思考(而不是单纯的只会用这个API或者这个组件)。另外也会考察考察面试者的综合素质和抗压状况。

ps: 感受三面的面试官是个大佬,比较严肃有气势,我有的不肯定的东西可能说话带着疑问句,他就直接说你不要问我是否是,直接说就就好了。 面试官比较直接,我答的出来的题他就直接说看来这个题你已经掌握了,我答的很差的他也当场说你这个题答得很差。比较庆幸本身面试的前一天晚上复习时押了几个题,押到了网络模型以及每层协议,手写ajax和map的实现,要否则这场面试估计凉凉,仍是本身太菜了~~唉

另外有一个小插曲是以前字节同窗有说面试官可能会问前面的面试答的怎么样,有哪些不会的,可能会再问有没有学习,因此我就把前面遇到的不会的也看了一下。 但三面面试官出题的时候说了一句让我看看前面还有哪些没出过的,要找没出过的题考我,因此这个仍是分人分部门啦~

HR面 40min

以前遇到的hr面都是电话面,此次的比较正式,让下载飞书,经过飞书进入连接地址进行视频面试。

对前面的面试有什么感觉?

你以为三位面试官是怎么样的人?为何?

如何准备面试的?以前有看过面经吗?

喜欢团队合做仍是本身工做

合做遇到很差相处的人怎么办?

团队利益优先仍是我的利益优先?

讲一讲最近在看什么书

户籍所在地?高考考了多少分?

兴趣爱好?

最黑暗的时刻?怎么排解

对考研成绩和学校满意吗?

对将来职业发展的规划?

分别用三个词形容本身,同事和朋友怎么形容你?

平时都是怎么学前端的?
(在这里我有说到喜欢经过看技术文档学习,HR小姐姐表示那字节还挺适合个人,由于内部有不少技术文档可供学习)

github有常常更新吗?

介绍了上下班时间,薪资待遇

问了能实习多久,而且表示若是在这边实习到毕业能够直接转正(本人2022届的研究生),也说若是考虑到毕设的话是能够请长假的,一个多月的那种长假。

总之,hr面就比较轻松了,和小姐姐聊的挺愉快。

总结

最后,结合此次面试和前面字节其余部门的面试来看,感受字节仍是很注重基础和底层原理的。

框架类的东西问的不太多,主要仍是js要学好(会考手写call, bind, apply, ajax, promise, map方法),还有计算机网络的东西,尤为是与HTTP请求相关的知识也必定要掌握。

编程题: 算法不会问的太难,基本都是简单的难度,大多会结合数据结构来考,好比树和链表的操做,另外还要掌握至少三四排序算法以及其时间复杂度。 也会让手写一些简单的api,或者封装一个组件,算法和一些简单的API通常都是须要当场运行的,因此写的时候要细心,若是运行老是报错就很尴尬了。

常考手写可参考另外一篇文章,覆盖了容易考到的各类高频手写~~ https://segmentfault.com/a/11...

项目方面考察的点:

1. 项目内容,所用技术,本身在里面作了哪些工做
2. 项目的难点和最大收获(谈难点时一般会问的特别深刻,避免给本身挖坑)
3. 项目中遇到的其余问题(能够是非技术上的),你会怎么解决?

hr面: 主要关注候选人的这几个点:

1. 学习成绩,在校经历
2. 团队合做能力,处理团队问题的方式
3. 抗压能力
4。我的性格,爱好
5. 可否长期实习,有无转正意向
6. 对将来职业发展的规划
7. 学习能力
相关文章
相关标签/搜索