筆者作為一名雙非二本畢業(yè)7年老Android, 最近面試了不少公司, 目前已告一段落, 整理一下各家的面試問(wèn)題, 打算陸續(xù)發(fā)布出來(lái), 供有緣人參考佩番。今天給大家?guī)?lái)的是《美團(tuán)收銀Android一面涼經(jīng)(2024)》。
應(yīng)聘崗位: 美團(tuán)餐飲PaaS平臺(tái)Android開(kāi)發(fā)工程師
技術(shù)一面
- 面試時(shí)長(zhǎng): 65min(提問(wèn)45min + 代碼考核10min + 反問(wèn)10min)
- 代碼考核: 14. 最長(zhǎng)公共前綴
面試問(wèn)題(45min)
- 自我介紹
- 當(dāng)前團(tuán)隊(duì)規(guī)模
- 是否離職
- 看上去你參與大前端的東西也做得比較多罢杉。原生開(kāi)發(fā)和RN開(kāi)發(fā)的占比是多少趟畏?
- Native開(kāi)發(fā)和Java和kotlin的占比。
- 項(xiàng)目A(RN頁(yè)面打開(kāi)速度優(yōu)化)
- 播放優(yōu)化
- Android基礎(chǔ)
- 自定義View
- 自定義View有幾種構(gòu)造方法滩租。
- AttributeSet是做什么用的
- 什么時(shí)候傳值赋秀?什么時(shí)候兩個(gè)參數(shù)的構(gòu)造方法會(huì)被調(diào)用?
- 第一個(gè)參數(shù)Context, 我們?cè)诙xView里拿到context會(huì)做什么律想?
- Activity和Application作為自定義View的Context有什么區(qū)別猎莲?會(huì)有什么問(wèn)題?
- Application和Activity作為View的Context, View的存活長(zhǎng)度技即。
- Manifest里給Application和Activity設(shè)置不同的theme會(huì)怎么樣著洼?
- 自定義View
- 方法粒度路由框架
- 如何注冊(cè)
- 為什么要做方法粒度? 是有需求嗎?
- 組件化的調(diào)用是以反射的形式, 不感知版本的變更。路由修改, 怎么規(guī)避而叼?
- 組件化之后, 不知道哪些是我們的依賴方, 怎么去感知有哪些業(yè)務(wù)使用了我們這個(gè)組件的路由身笤?
- ReactNative相關(guān)
- 封裝Native組件給RN使用, 一般要開(kāi)發(fā)哪幾個(gè)類?
- 原生組件(接收屬性ReactProps; 事件需要回調(diào)給JS; 在JS直接調(diào)用Native)
- RN寫的多嗎? TS和JS那個(gè)用得比較多葵陵?
- 你當(dāng)前公司也是JS用得多嗎液荸?
- RN的類組件生命周期
- 啟動(dòng)頁(yè)優(yōu)化, 加載速度的優(yōu)化, 組件交互或者重復(fù)渲染的優(yōu)化有嗎?
- Component和PureComponent的區(qū)別
- Kotlin+Jetpack
- Activity獲取ViewModel實(shí)例如何獲取?
- 為什么不直接new一個(gè)ViewModel脱篙?
- ViewModel的生命周期是比Android長(zhǎng)的對(duì)吧娇钱?ViewModel對(duì)象存在了哪里?
- kotlin協(xié)程的原理
- 用過(guò)Flow嗎
代碼考核(10min)
// 雖然我這里用了kotlin, 但實(shí)際美團(tuán)的線上代碼考核平臺(tái)沒(méi)有kotlin語(yǔ)言, 但可以用Java涡尘。
class Solution {
fun longestCommonPrefix(strs: Array<String>): String {
val n = strs.size
val l = strs[0].length
for(i in 0 until l) {
val ch = strs[0][i]
for(j in 0 until n) {
if(strs[j].length <= i || strs[j][i] != ch) {
return strs[0].substring(0,i)
}
}
}
return strs[0]
}
}
反問(wèn)環(huán)節(jié)(10min)
應(yīng)聘的崗位是負(fù)責(zé)什么業(yè)務(wù)的可以介紹一下嗎忍弛?
產(chǎn)品線內(nèi)容:
- 美團(tuán)收銀機(jī)(安卓Pad、Window筆記本, 跨Windows和Android)
- 點(diǎn)餐助手/海底撈iPad點(diǎn)餐(跨Android考抄、iOS)
- 老板經(jīng)營(yíng)店鋪發(fā)布活動(dòng)使用"美團(tuán)管家"App(跨Android细疚、iOS)
- 內(nèi)部人員使用的小App
我們組: 美團(tuán)收銀。給這個(gè)產(chǎn)品線做基建川梅。
組內(nèi)分成三個(gè)方向:
- 1 UI組件(RN偏多), 90%+(TS or JS)+10%(性能要求高的場(chǎng)景需要橋接Native的組件)疯兼。
- 2 RN容器提供橋能力。殼能力贫途、鑒權(quán)吧彪;業(yè)務(wù)橋;場(chǎng)景化,個(gè)性化的業(yè)務(wù)橋丢早。(Kotlin KMP, 邏輯層的跨平臺(tái), 非UI層的跨平臺(tái))
- 3 框架方向姨裸。RN用的比較多, 未來(lái)希望統(tǒng)一H5秧倾、小程序、鴻蒙傀缩。目標(biāo)是保持RN的寫法, 一套代碼在不同容器里跑起來(lái)那先。
compose也已經(jīng)在工程里使用了嗎?
沒(méi)用赡艰。本質(zhì)是Flutter的機(jī)制, 沒(méi)有動(dòng)態(tài)化的能力售淡。還是RN比較多。
這個(gè)崗位是說(shuō)這幾條線可以選慷垮?還是確定某條線揖闸?
可以選×仙恚看能力圖譜汤纸。
看我適合哪一條。
第二個(gè)方向: 橋能力那塊惯驼。
第三個(gè)方向: 框架能力蹲嚣。需要更底層, c/c++的經(jīng)驗(yàn)。
鴻蒙目前也在駐場(chǎng)幫我們(美團(tuán))做兼容祟牲。他們聲稱未來(lái)也會(huì)兼容RN的寫法。但他們只能兼容RN的原子組件, 我們橋接的一些高性能的Native組件,
他們沒(méi)辦法幫我兼容抖部。目前現(xiàn)在也在考慮這一部分是怎么去弄说贝。
對(duì)崗位職級(jí)的要求?
框架需要7-8。工作年限稍高慎颗。
另外兩個(gè)稍低乡恕。
崗位HC出現(xiàn)這么多, 是因?yàn)槭裁矗?/h2>
人員流動(dòng)不大, 上半年有同學(xué)活水, 大多數(shù)同學(xué)都是純native開(kāi)發(fā), 沒(méi)做過(guò)RN。
之前做主做業(yè)務(wù), 近2年轉(zhuǎn)型開(kāi)始做一些基礎(chǔ)建設(shè)俯萎。然后把業(yè)務(wù)全都交出去了傲宜。
美團(tuán)餐飲的總部在成都。一部分業(yè)務(wù)交給成都(偏店內(nèi)經(jīng)營(yíng)), 一部分交給上海(偏營(yíng)銷)夫啊。他們業(yè)務(wù)閉環(huán)了, 我們這邊純?yōu)樗麄兲峁┗ā?/p>
會(huì)需要到成都函卒、上海出差去開(kāi)會(huì)嗎?
1 線上開(kāi)會(huì)居多撇眯。
2 大客戶切店需要出差报嵌。
你在團(tuán)隊(duì)里的角色?
所屬UI組件方向的小組熊榛。不是x1節(jié)點(diǎn), 僅僅是初面面試官锚国。
幾輪面試?
3輪技術(shù)(至少)+1技術(shù)面(能力競(jìng)爭(zhēng)+HC不足)+HR面
總結(jié)
- 美團(tuán)收銀的整體面試問(wèn)題比較密集, 有對(duì)項(xiàng)目?jī)?nèi)容的技術(shù)細(xì)節(jié)拷打, 也有對(duì)基礎(chǔ)知識(shí)的考察玄坦。
- 美團(tuán)有不少業(yè)務(wù)是跑在RN上的, 面試中也有不少針對(duì)RN的問(wèn)題血筑。包括對(duì)RN原理的理解、為RN提供自定義View的流程、提供各種橋能力等豺总。
- 面試官人很nice, 會(huì)在我回答問(wèn)題卡殼的時(shí)候, 稍稍引導(dǎo)一下车伞。