1. 程式人生 > 其它 >面試大廠,linuxC/C++開發崗要學到什麼程度才可以?

面試大廠,linuxC/C++開發崗要學到什麼程度才可以?

目前BAT裡面都是有大量的c++開發崗位,鵝廠在c++後臺開發崗都是急需。雖然崗位對技術要求難度係數較高,但是有大廠情結的朋友們還是可以衝一衝的。

很多有c/c++語言基礎的朋友,在面試後臺崗的時候都會有一個疑問,面試大廠的時候,技術水平要到一個什麼程度才能進?

 

這裡就分為校招和社招。校招的話對於技術層面的要求會相對較低。

 

會C with STL以及常見的資料結構與演算法,並且筆試能當場做出leetcode中等難度以下的人就有70分了,如果筆試的時候對STL、auto、lambda等用法都很熟練,都有加分。對於實習生來說,表現不錯就可以招進來,剩下網路程式設計和linux進去之後會再教你。

 

所以校招更看重的是你的基礎和學習能力。實習進去之後再觀察你的技術學習進度決定是否給你發offer。當然,如果你能提前掌握Linux環境程式設計,網路程式設計等技術更會加分,畢竟不管是哪個賽道,內卷都是有的。

 

再說社招,其實對於c++後臺開發崗位來說,最核心的技術點有3個:

 
  1. C++基礎知識
  2. TCP網路程式設計(以及「可靠」UDP)
  3. 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