【秋招求職之路】「快手-效率工程」面試復(fù)盤總結(jié)
往期面試復(fù)盤推薦
「經(jīng)驗分享」2020,Chocolate 同學(xué)秋招總結(jié),所遇 | 所思 | 所學(xué) | 所悟 【秋招求職之路】字節(jié)跳動一面復(fù)盤總結(jié) 【秋招求職之路】字節(jié)跳動二面復(fù)盤總結(jié) 【秋招求職之路】騰訊-QQ音樂一面復(fù)盤總結(jié) 【秋招求職之路】「阿里智能事業(yè)群-達(dá)摩院」秋招面試復(fù)盤總結(jié)【文末福利】 【秋招求職之路】「滴滴-橙心優(yōu)選」面試復(fù)盤總結(jié)
快手-效率工程面經(jīng)
介紹
8月25日(周二)投遞,在9月8日上午收到 HR 電話,告知簡歷通過了,約9月10日上午11點面試,整個面試時間1個小時左右。
一面
面經(jīng)
1、自我介紹
2、你剛剛提到了項目中防抖 debounce ,你知道實現(xiàn)原理是什么嗎?說一說
這個問題是項目中用到過,然后自我介紹提了一下,就說了一下原理,面試官居然不要我手撕...
3、你家鄉(xiāng)在哪?面試崗位在北京,有沒有城市要求嗎?
回答:反正在湖南,去哪都是很遠(yuǎn)...
4、實現(xiàn)一個函數(shù),以字符串形式(要求字母小寫)返回參數(shù)類型
// null => 'null' undefined=>'undefined'
function getArgType(arg){
}
實現(xiàn):
/* 編程題:以字符串形式返回參數(shù)類型 */
function getArgType(arg){
let str = Object.prototype.toString.call(arg).slice(8,-1)
let res = str[0].toLowerCase() + str.substr(1)
return res
}
console.log(getArgType(null))
console.log(getArgType(undefined))
const a = 1
const b = new Number(1)
console.log(a === b)
console.log(getArgType(a))
console.log(getArgType(b))
console.log(getArgType(new Date(2020,9,10)))
console.log(getArgType(new RegExp(/^\s+|\s$/g)))
后面終點問了 1 和 new Number(1) 有什么區(qū)別,這里沒答上來。
對象Number、String、Boolean分別對應(yīng)數(shù)字、字符串、布爾值,可以通過這三個對象把原始類型的值變成(包裝成)對象
var v1 = new Number(123);
var v2 = new String('abc');
var v3 = new Boolean(true);
typeof v1;// "object"
typeof v2;// "object"
typeof v3;// "object"
v1 === 123; // false
v1 == 123; // true
但是要注意 new Boolean 的用法,只有當(dāng) new Boolean 的參數(shù)值為 null 或者 undefined 時,求值轉(zhuǎn)換的原始的值才是 false ,其他情況都是 true
5、給你一個數(shù)組 [1,3,2,5] 你有多少種方法,求得最大值,說一說
一下沒 get 到面試官的點,我想著除了遍歷比較或排序還能怎么做。但后面不斷引導(dǎo)后發(fā)現(xiàn)可以用各種數(shù)組
api,然后就答了sort,map,reduce,for循環(huán),shift,pop,forEach,Math.max(...arr)
后面面試官說了用 apply,沒使用過,補(bǔ)充一下:
var arr = [6, 4, 1, 8, 2, 11, 23];
console.log(Math.max.apply(null, arr))
6、實現(xiàn)如下效果:當(dāng)你點擊 ul 下面某個 li后(多個 ui),打印對應(yīng)索引值(可以為 0 或 1)
<ul><li></li>........</ul>
<ul><li></li>........</ul>
<ul><li></li>........</ul>
最終實現(xiàn)如下,一開始我是直接 querySelectorAll所有的 li,但是會給所有 li綁定事件,于是面試官說考慮使用事件代理,然后提示 e.target(當(dāng)時沒寫出來,現(xiàn)在補(bǔ)充一下)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>編程題:ul底下li索引值(多個ul)</title>
</head>
<body>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
<script>
let list = document.getElementsByTagName('ul')
for (let i = 0; i < list.length; i++) {
list[i].addEventListener('click', (e) => {
let target = e.target
// console.log(target)
if (target.tagName.toLowerCase() === 'li') {
let liList = list[i].getElementsByTagName('li')
// console.log(liList)
// getElementsByTagName方法獲取到的元素列表不是數(shù)組,
// 和函數(shù)的arguments一樣是一種類數(shù)組類型,不可以直接使用數(shù)組的方法。
let idx = Array.prototype.indexOf.call(liList, target)
/* 或者采用如下方式,將類數(shù)組轉(zhuǎn)換成數(shù)組,然后使用indexOf方法 */
// let idx = Array.from(liList).indexOf(target)
console.log(liList)
console.log(idx)
}
})
}
</script>
</body>
</html>
7、使用 vue 封裝一個組件,實現(xiàn)倒計時的功能
倒計時(一個 button 按鈕,有下述三種狀態(tài))
(開始-》暫停-》繼續(xù))
{count}
按鈕
參考:vue封裝倒計時組件
8、你還有什么想問我的嗎?
感受
問了部門是效率工程,然后主要業(yè)務(wù)是做公司內(nèi)部系統(tǒng),比如各種流程處理,請假那些,然后還提到了公司封裝內(nèi)部聊天工具,類似于企業(yè)微信那種。然后還問了技術(shù)棧,主要用 React + Ts ,然后面試官說了技術(shù)棧都不是太大問題,主要還是 js 能力
最后,問了一下多久會有面試結(jié)果,面試官說一天之內(nèi)給結(jié)果。
后續(xù)
依舊是一面之后就沒有任何消息,結(jié)束了...
小獅子有話說
我是小獅子團(tuán)隊的【一百個Chocolate】,全網(wǎng)同名,周更的前端博主,分享一些前端技術(shù)干貨與程序員生活日常,歡迎各位小伙伴的持續(xù)關(guān)注,一起變優(yōu)秀~
學(xué)如逆水行舟,不進(jìn)則退
你若喜歡,為小獅子點個【在看】哦~
