面試大廠,linuxC/C++開發崗要學到什麼程度才可以?
阿新 • • 發佈:2022-04-21
目前BAT裡面都是有大量的c++開發崗位,鵝廠在c++後臺開發崗都是急需。雖然崗位對技術要求難度係數較高,但是有大廠情結的朋友們還是可以衝一衝的。
很多有c/c++語言基礎的朋友,在面試後臺崗的時候都會有一個疑問,面試大廠的時候,技術水平要到一個什麼程度才能進?
這裡就分為校招和社招。校招的話對於技術層面的要求會相對較低。
會C with STL以及常見的資料結構與演算法,並且筆試能當場做出leetcode中等難度以下的人就有70分了,如果筆試的時候對STL、auto、lambda等用法都很熟練,都有加分。對於實習生來說,表現不錯就可以招進來,剩下網路程式設計和linux進去之後會再教你。
所以校招更看重的是你的基礎和學習能力。實習進去之後再觀察你的技術學習進度決定是否給你發offer。當然,如果你能提前掌握Linux環境程式設計,網路程式設計等技術更會加分,畢竟不管是哪個賽道,內卷都是有的。
再說社招,其實對於c++後臺開發崗位來說,最核心的技術點有3個:
- C++基礎知識
- TCP網路程式設計(以及「可靠」UDP)
- Linux環境程式設計
考較到了程式碼能力,架構能力,安全能力及工程素養。
如果對於這三方面的技術掌握到位,面試通過的概率不會低。至於如何在大廠的職級體系中去確定自己的定崗,就會有更加細分的標準。
以鵝廠c++後臺崗舉例,對於每一個技術方向的掌握情況都是有大致的判斷【T1-T9】
一、程式語言
- 開發環境搭建、執行第一個hello word【T1】
- 運用基本資料型別、表示式與操作符進行簡單開發【T1】
- 字串、向量和陣列【T1】
- 語句和函式【T1】
- 分支控制、迴圈【T1】
- 物件生命週期 & 垃圾回收【T2】
- 錯誤和異常處理【T2】
- 標準庫使用【T2】
- 日誌分析、斷點除錯等簡單程式碼除錯方法【T3】
- 面向物件設計原則【T3】
- 單例模式、工廠模式等簡單的設計模式【T4】
- gdb高階除錯技巧和常用系統分析工具使用【T5】
- 介面卡模式、代理模式等常見設計模式【T6】
- 建立型、結構型、行為型設計模式的應用技巧【T7-T8】
- 程式碼耦合的產生原因和規避方法【T9】
- 整潔程式碼的設計思路和落地【程式碼能力】
- 複雜系統重構,識別系統潛在風險以及優化點,進行模組劃分以及分層設計,提高系統內聚性降低模組間的低耦度【架構能力】
- 對程式設計正規化有深入的瞭解,並對語言新特性熟悉,能夠針對具體的問題場景分析,交付優秀的程式碼【程式碼能力】
- 熟悉常見的併發程式設計模型,並能根據業務場景進行落地【程式碼能力】
- 程式碼質量管理,熟知測試理論,並能運用測試各階段的設計原則,高質量的輸出測試用例【工程素養】
二、資料結構與演算法
- 初識資料結構和演算法 - 氣泡排序【T2】
- 陣列、列表、棧,佇列等基本線性資料結構【T2】
- 遞迴、排序、二分查詢演算法【T2】
- 跳錶、散列表、hash演算法【T3】
- 二叉樹、紅黑樹、字典樹【T3】
- 堆排序、歸併排序、二分查詢等高階演算法【T4】
- 字串匹配、KMP演算法【T4】
- 熟悉圖論演算法:dijkstra演算法、最小生成樹、深度/廣度優先搜尋等【T5】
- 貪心演算法、動態規劃【T5】
- 能夠分析演算法的執行效率和資源消耗、時間和空間複雜度分析【T6】
- 能夠根據實際場景,選用合適的資料結構和演算法進行程式設計【T7-T9】
- 位運算(異或非)【T7-T9】
三、資料庫
- MySQL伺服器的安裝與配置【T1】
- 資料表的新建、查詢和刪除操作【T1】
- 標準語言SQL和CURD能力【T2】
- 表、主鍵、索引、檢視【T2】
- 表結構設計規範與正規化運用【T3】
- 事務的使用以及其ACID特性【T3】
- 不同儲存引擎的區別【T3】
- 事務的隔離級別和實踐原理【T4】
- 資料庫的連線池管理【T4】
- 資料庫的許可權管理【T4】
- SQL注入、web shell攻擊的危害和規避方法【T4】
- 資料庫的叢集和高可用【T5】
- SQL語句優化、執行計劃檢視、索引和引數調優【T5】
- 運用Redis進行資料快取處理,提高系統性能【T6】
- redis記憶體模型【T7-T9】
- redis的持久化、主從同步以及叢集【T7-T9】
- 針對業務資料特點,對儲存進行選型
- 資料庫理論(關係型非關係型)
四、網路原理
- 利用ping、ifconfig、telnet等命令檢視計算機網路狀況【T1】
- 網路體系中每一層的作用和基本協議【T2】
- TCP和UDP的基本原理【T3】
- http協議基礎與應用【T3】
- TCP協議的可靠傳輸機制【T4】
- TCP協議的流量控制和擁塞控制【T4】
- Session、Cookie 與 Application【T5】
- 網路安全的加密演算法與數字簽名【T5】
- https協議的基本原理【T5】
- http2.0與http3.0特性【T6-T9】
- XSS攻擊的危害和規避方法【T6-T9】
- Wireshark、tcpdump等網路抓包工具使用和結果分析【T6-T9】
- 網路故障分析與問題解決【T6-T9】
- 網路規劃與網路拓撲
五、作業系統
- 常用的檔案、目錄操作命令使用【T1】
- 程式的編譯與執行【T1】
- shell指令碼與vi使用【T2】
- linux系統性能監控命令的使用【T2】
- 執行緒、程序的概念、建立與排程【T3】
- 使用者態和核心態的基本概念、區別【T3】
- CPU的上下文切換、中斷處理與系統排程【T3】
- 磁碟檔案系統、虛擬檔案系統與檔案快取【T4】
- 實體記憶體和虛擬記憶體【T4】
- 程序間通訊機制【T5】
- 死鎖的危害、出現原因、解決方法【T5】
- 記憶體溢位、記憶體洩漏的原因與解決【T6】
- 如何高效利用CPU快取【T7】
- 記憶體問題分析與效能優化【T7】
- 磁碟 I/O 效能優化【T7】
- 系統網路效能評估與優化【T8-T9】
六、網路程式設計
- 熟悉TCP/IP 四層模型,利用socket程式設計編寫簡單客戶/伺服器程式【T2】
- 基本TCP/UDP套接字程式設計【T3】
- 五種常見I/O模型【T4】
- I/O多路複用技術【T5】
- time_wait、close_wait狀態產生的原因、危害與避免方法【T5】
- 熟練掌握各種I/O模型的運用場景【T5】
- 掌握C10k問題的基本解決方案(這個是不是不合適呀?現在都在攻克C10M問題了)【T5】
- 掌握常用網路框架,並能根據場景靈活應用【T6-T9】
七、分散式架構
- 簡單rpc協議設計和框架搭建【T5】
- rpc的服務定址、資料流的序列化與反序列化和網路傳輸【T5】
- 分散式事務理論與常見的網際網路公司落地方案【T5】
- 一致性演算法【T5】
- 分散式鎖的設計與實現【T5】
- 主流的微服務rpc框架【T5】
- 服務註冊、服務發現【T6】
- 分散式trace、監控告警【T7】
- 常見負載均衡演算法以及各演算法的適用場景【T7】
- 主流分散式系統架構設計,比如分散式快取、API閘道器、分散式訊息元件【T8-T9】
- 分散式系統的快取設計、快取雪崩、快取擊穿等問題的解決方案【T8-T9】
- 微服架構熔斷保護、降級熔斷、流量控制、故障隔離、故障恢復方案設計【架構能力】
- 分散式架構的高併發、高可用、可擴充套件【架構能力】
八、雲原生
- Docker原理與搭建【T4】
- Kubernetes【T5】
- 容器編排、容器網路【T6】
- 整合構建【T6】
- 雲上常見的SaaS服務和元件【T7】
- 彈性擴縮容【T8】
- 服務網格Istio和Serverless【T9】
九、軟技能【T9】
- 需求分析
- 專案設計方法
- 專案流程管理
- 專案風險控制
- 跨部門合作
- 溝通技巧
- 組織協調
- 目標管理
可以看到,對於定崗的每一個技術模組都會有相對的技術掌握標準,可以對照著技術提綱與自我的技術掌握情況進行對比參照。
希望能給面試c++後臺開發崗的朋友帶來一些幫助。
Linuxc/c++伺服器開發高階架構師 學習提升資料獲取、視訊課程
https://docs.qq.com/doc/DR1V1V29ZR0x6alNS