面試的職級是 2-2,技術(shù)面一共 3 輪,每一面都要手寫算法。我在 2023 年 7 月下旬被裁員,于 2024 年 2 月初面試字節(jié)跳動,沒有通過第 3 輪面試,在這里記錄下當時的面試問題,希望幫到大家。
首先是自我介紹,主要介紹在任職的公司落地了低代碼平臺和用戶操作記錄回溯,還向開源項目 rrweb 提交了兩個PR,最后是公司的插件化架構(gòu)。
自我介紹完畢,面試官的第一個問題是,為什么離職?我因為被裁而離職,如實回答了,之后每一輪面試官都會詢問什么被裁,另,由于我從離職到面試字節(jié)中間隔了7個月左右,面試官還重點關(guān)注了,離職之后在做什么。離職之后,我首先回家休息了近 1 個月,旅游了近 2 個月,然后寫書花了 1 個多月,到 11 底開始找工作,這沒什么好隱瞞的,如實告知了面試官。
第一輪主要面試 JS 和 React基礎(chǔ)知識,問題如下:
在 js 中有浮點數(shù)運算不正確的時候,比如 0.1 + 0.2 不等于 0.3 這是什么原因,要怎么解決
對 webpack 有了解嗎,我看你在做低代碼
webpack中 loader 與 plugin 有什么區(qū)別
有沒有寫過 plugin
我們寫代碼的時候是 es6,瀏覽器運行的時候是 es5,在做代碼轉(zhuǎn)化的時候,webpack 幫我們做了什么事情
在 React 類組件中,為什么修改狀態(tài)要使用 setState 而不是用 this.state.xxx = xxx
setState 函數(shù)做了哪些事情
React 生命周期 commpoentWillUnMount() 對應(yīng)的 hooks 要怎么寫
useState 的原理是什么,背后怎么執(zhí)行的,它怎么保證一個組件中寫多個 useState 不會串
函數(shù)組件重新渲染的時候怎么拿到useState之前的狀態(tài),而不是得到初始化的狀態(tài)
React為什么要自定義合成事件
你的簡歷里寫了關(guān)注資產(chǎn)損失,這是做什么事情。
你在地代碼開發(fā)與實踐上也做了一些事情,當時是做什么呢?
表單的聯(lián)動是怎么處理的
當時做這個表單驅(qū)動的時候,為什么沒有用 Formily 現(xiàn)成的方案呢
被裁的原因是什么呢
從離職到現(xiàn)在一直沒有找工作嗎?
從11月底到現(xiàn)在兩個月了有哪些 offer 了嗎
算法題
實現(xiàn) loadsh.get 方法
計算二叉樹的最大深度
島嶼的最大面積
最后是反問環(huán)節(jié)。面試時長 1 小時 40 多分鐘。
由于簡歷重點介紹了低代碼,并且在自我介紹的時候,提到了我的書——《低代碼平臺開發(fā)實踐:基于React》,因此面試官大部分問題都與低代碼相關(guān)。問題如下:
為什么寫書
能把你的掘金上發(fā)的低代碼文章發(fā)給我嗎?
低代碼針對的中后臺是什么樣的
table 中的字段也是可以配置的嗎?Table 頭和每一項下面展示的內(nèi)容怎么配置
為什么要做低代碼
做低代碼系統(tǒng)的時候你有考慮研發(fā)量嗎
整個低代碼都是你一個人做嗎?
當屬性面板上有修改之后,畫布刷新的機制是怎么樣的
繼續(xù)討論研發(fā)量,開發(fā)規(guī)劃的問題
沒有考慮使用已有的低代碼項目做二次改造嗎
做低代碼的時候有沒有遇到比較難的問題,怎么解決的
被裁的原因
算法題
最大子數(shù)組和
最長回文子串
最后是反問環(huán)節(jié)。面試時長 1 個小時左右。
這一輪的面試官沒讓做自我介紹,一開始就是寫算法題
算法題
K 個一組翻轉(zhuǎn)鏈表
下面是詢問的問題
為什么寫書
在市面上類似的書有一些,你的書有什么不同
什么場景適合做低代碼,給什么用戶使用
低代碼最適合的場景是不是no-code?
怎么界定低代碼和無代碼的邊界
你做的低代碼平臺能實現(xiàn)的最復雜的一個場景是什么樣的
為什么json要轉(zhuǎn)化為手寫代碼
轉(zhuǎn)化成手寫代碼是什么樣的
源碼解析器是什么
開發(fā)低代碼的背景
整個項目的周期有多長
從酷家樂離職之后主要在寫書嗎?
用戶操作記錄回溯工具是為了解決什么問題
用戶記錄回溯工具有達到目的嗎
主管有沒有說被裁的原因
最后是反問環(huán)節(jié)。面試時長 1 個小時左右。
面試被問到的重點問題如下:
為什么被裁
被裁之后在干什么
低代碼項目的迭代安排和人員安排
市面上的已有低代碼方案
需要改進的點:
為了迫使自己在對方問問題之后思考問題,重復一下問題里的關(guān)鍵字。比如,當對方問為什么 React使用 setState() 修改狀態(tài),而不是直接給 this.state 賦值去修改?重復一遍面試官的話,如果面試官說的話很長,那就提煉出關(guān)鍵字后重復一遍。
當某個方案有多個原因時,先回答1,2,3,再逐條分析。比如為什么 React 要封裝合成事件?為什么要將低代碼 json 轉(zhuǎn)成手寫代碼?為了讓自己回答問題更專注,使用手指頭記錄自己說到了第幾點。(結(jié)構(gòu)化)
曾經(jīng)我在公司落地的低代碼,大概存在以下5個問題:
搭建完成的應(yīng)用無法獨立部署
無渲染沙箱,當處于編輯態(tài)時,畫布無純凈的運行環(huán)境
無組件市場,低代碼設(shè)計器能使用的組件全部寫死在項目內(nèi)
用來描述低代碼應(yīng)用的Schema無版本管理,無法查看以前保存的版本。
開發(fā)人員無法對搭建完成的應(yīng)用二次開發(fā)。
《低代碼平臺開發(fā)實踐:基于React》解決了上述 5 個問題,還涉及業(yè)務(wù)場景的需求分析,從開發(fā)技術(shù)層面來講,讀者將了解到下面這5個方面的內(nèi)容:
1)JSON Schema 保存到 Git 倉庫中,它不影響線上運行的低代碼應(yīng)用,只用于 APP 各版本的預覽和重新編輯。
2)線上運行的應(yīng)用與 JSON Schema 脫鉤,即便低代碼平臺停止服務(wù),線上的 APP 依然能正常運行。
3)引入渲染沙箱,設(shè)計器和渲染器位于不同的 Frame,此時畫布擁有純凈的運行環(huán)境。
4)設(shè)計組件規(guī)范,開發(fā)腳手架,其用于開發(fā)、調(diào)試和上傳低代碼組件,這使設(shè)計器能使用豐富的組件去開發(fā)應(yīng)用,同時讓低代碼組件和低代碼平臺解耦。
5)開發(fā)低代碼平臺所需的基礎(chǔ)設(shè)施,包括 GitLab CI/CD、npm 私有庫,LDAP 賬號管理系統(tǒng)等。
《低代碼平臺開發(fā)實踐:基于React》由 4 大部分組成,其中第 3 部分介紹開發(fā)低代碼平臺涉及的各個方面,這部分難度最大。如果你是一名經(jīng)驗豐富的軟件工程師并且對低代碼已有了解,建議從第 4 章開始閱讀;如果你對低代碼了解得不多,請一定從第 1 章的基礎(chǔ)理論知識開始學習。
第一部分是基礎(chǔ)篇,只包含一章,它介紹后續(xù)章節(jié)使用的理論知識,涉及的知識點有 React Context API、React Hooks、React Ref、Mobx 和 MongoDB 等,要想在本地電腦運行本圖書介紹的低代碼平臺,你需要在自己電腦上下載 MongoDB。
第二部分為需求分析篇,包含兩章,它介紹低代碼平臺開發(fā)的應(yīng)用要滿足哪些需求,同時也介紹低代碼平臺的功能。
第三部分為實戰(zhàn)篇,包含五章,是本圖書的重點,介紹如何開發(fā)低代碼平臺,其中展示了大量的代碼示例,涉及的內(nèi)容有低代碼架構(gòu)策略、低代碼組件、設(shè)計器、渲染器和代碼生成器。
第四部分為基礎(chǔ)設(shè)施篇,只包含一章。低代碼平臺用于創(chuàng)建應(yīng)用程序,它本身也是應(yīng)用程序,值得一提的是,它對研發(fā)體系的要求相當高。如果你手上沒有一套完善的研發(fā)體系,涵蓋代碼托管、CI/CD、CDN,npm私有庫等部分,那么妄談開發(fā)低代碼平臺。基礎(chǔ)設(shè)施篇涉及的內(nèi)容有,如何使用 GitLab CI/CD 建立持續(xù)部署 pipeline、如何搭建 npm 私有庫,如何搭建 LDAP 賬號管理系統(tǒng)等。


Copyright C 20202024 All Rights Reserved 寧波置頂人力資源有限公司 版權(quán)所有 浙ICP備2025164909號-7
地址:浙江省寧波市中山大廈10樓 EMAIL:admin@meipin.com
ICP經(jīng)營許可證:浙B2-20250965 人力資源證: (浙)人服證字(2025)第0203001313號
Power by HR美聘