【秋招求職之路】「快手-效率工程」面試復(fù)盤總結(jié)
往期面試復(fù)盤推薦
「經(jīng)驗(yàn)分享」2020,Chocolate 同學(xué)秋招總結(jié),所遇 | 所思 | 所學(xué) | 所悟 【秋招求職之路】字節(jié)跳動(dòng)一面復(fù)盤總結(jié) 【秋招求職之路】字節(jié)跳動(dòng)二面復(fù)盤總結(jié) 【秋招求職之路】騰訊-QQ音樂一面復(fù)盤總結(jié) 【秋招求職之路】「阿里智能事業(yè)群-達(dá)摩院」秋招面試復(fù)盤總結(jié)【文末福利】 【秋招求職之路】「滴滴-橙心優(yōu)選」面試復(fù)盤總結(jié)
快手-效率工程面經(jīng)
介紹
8月25日(周二)投遞,在9月8日上午收到 HR 電話,告知簡(jiǎn)歷通過了,約9月10日上午11點(diǎn)面試,整個(gè)面試時(shí)間1個(gè)小時(shí)左右。
一面
面經(jīng)
1、自我介紹
2、你剛剛提到了項(xiàng)目中防抖 debounce ,你知道實(shí)現(xiàn)原理是什么嗎?說一說
這個(gè)問題是項(xiàng)目中用到過,然后自我介紹提了一下,就說了一下原理,面試官居然不要我手撕...
3、你家鄉(xiāng)在哪?面試崗位在北京,有沒有城市要求嗎?
回答:反正在湖南,去哪都是很遠(yuǎn)...
4、實(shí)現(xiàn)一個(gè)函數(shù),以字符串形式(要求字母小寫)返回參數(shù)類型
// null => 'null' undefined=>'undefined'
function getArgType(arg){
}
實(shí)現(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)))
后面終點(diǎn)問了 1 和 new Number(1) 有什么區(qū)別,這里沒答上來(lái)。
對(duì)象Number、String、Boolean分別對(duì)應(yīng)數(shù)字、字符串、布爾值,可以通過這三個(gè)對(duì)象把原始類型的值變成(包裝成)對(duì)象
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 時(shí),求值轉(zhuǎn)換的原始的值才是 false ,其他情況都是 true
5、給你一個(gè)數(shù)組 [1,3,2,5] 你有多少種方法,求得最大值,說一說
一下沒 get 到面試官的點(diǎn),我想著除了遍歷比較或排序還能怎么做。但后面不斷引導(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、實(shí)現(xiàn)如下效果:當(dāng)你點(diǎn)擊 ul 下面某個(gè) li后(多個(gè) ui),打印對(duì)應(yīng)索引值(可以為 0 或 1)
<ul><li></li>........</ul>
<ul><li></li>........</ul>
<ul><li></li>........</ul>
最終實(shí)現(xiàn)如下,一開始我是直接 querySelectorAll所有的 li,但是會(huì)給所有 li綁定事件,于是面試官說考慮使用事件代理,然后提示 e.target(當(dāng)時(shí)沒寫出來(lái),現(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索引值(多個(gè)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 封裝一個(gè)組件,實(shí)現(xiàn)倒計(jì)時(shí)的功能
倒計(jì)時(shí)(一個(gè) button 按鈕,有下述三種狀態(tài))
(開始-》暫停-》繼續(xù))
{count}
按鈕
參考:vue封裝倒計(jì)時(shí)組件
8、你還有什么想問我的嗎?
感受
問了部門是效率工程,然后主要業(yè)務(wù)是做公司內(nèi)部系統(tǒng),比如各種流程處理,請(qǐng)假那些,然后還提到了公司封裝內(nèi)部聊天工具,類似于企業(yè)微信那種。然后還問了技術(shù)棧,主要用 React + Ts ,然后面試官說了技術(shù)棧都不是太大問題,主要還是 js 能力
最后,問了一下多久會(huì)有面試結(jié)果,面試官說一天之內(nèi)給結(jié)果。
后續(xù)
依舊是一面之后就沒有任何消息,結(jié)束了...
小獅子有話說
我是小獅子團(tuán)隊(duì)的【一百個(gè)Chocolate】,全網(wǎng)同名,周更的前端博主,分享一些前端技術(shù)干貨與程序員生活日常,歡迎各位小伙伴的持續(xù)關(guān)注,一起變優(yōu)秀~
學(xué)如逆水行舟,不進(jìn)則退
你若喜歡,為小獅子點(diǎn)個(gè)【在看】哦~
