字節跳動前端實習面經(三輪技術面+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. 學習能力
相關文章
相關標籤/搜索