蔚來 編譯器開發(fā) 一面
兩個面試官,輪番拷打,主要業(yè)務是異構(gòu)部署、交叉編譯。全程五十分鐘。
圍繞項目經(jīng)歷
- 介紹自己的項目,接受拷打
- 編譯器結(jié)構(gòu)
- LLVM是什么
- LLVM編譯的流程
- LLVM IR是什么、結(jié)構(gòu)怎么樣
- 其他項目高相關(guān)的就不提了
場景題
- 假設(shè)有自己定義的函數(shù)Func1,用于某個特定芯片上的,不希望被編譯器做任何優(yōu)化,該如何編譯出來?在編譯層面有什么措施、代碼層面有什么措施?(考慮用動態(tài)鏈接庫或者修改編譯器的前后端,但感覺面試官好像不太滿意)
- 在鏈接的時候,編譯器怎么把上述的Func1鏈接進去的?(結(jié)合動態(tài)鏈接原理吟唱)
- Func1的參數(shù)的數(shù)據(jù)怎么辦(編譯器代碼生成部分的內(nèi)容,往棧上推)
- Func1訪問不了棧和寄存器,能否限制參數(shù)不往?;蚣拇嫫魃贤疲浚ㄍ鶅?nèi)存暫時存放),或者往緩存上放?(不曉得)
- Func1運行在一個芯片上,F(xiàn)unc2在另一塊芯片上,編譯器整體該怎么設(shè)計?(就是說在一個機子上,異構(gòu)編譯出兩個芯片上能跑的代碼。emmm,前端設(shè)計個類似于extern C的語法,后端該怎么輸出怎么輸出,真的感覺在胡說)
- 你說用LLVM做,那你有沒有考慮過LLVM有什么缺點?
其他
什么時候到崗?能做多久?Base深圳可以嗎?
總結(jié)
4月16日下午面的,全程無八股無手撕但問得滿頭大汗,對于異構(gòu)部署也不熟悉只能根據(jù)自己的認知瞎回答。第二天感謝信了。