十面騰訊,屌絲程序員的逆襲之路

《十面騰訊》本屌現今四年開發經驗;前先後後爲進騰訊面試十次(阿里旗下——騰訊互娛,騰訊直播的offer都被hr因學歷而被拒,最後的騰訊教育面幸運地被錄用了,拿到P6offer,真正的「十面」騰訊!)。mysql

本文前半部分主要分享面試總結,後半部分分享程序員我我的架構開發之路的學習經驗。react

騰訊十面nginx

面試總結程序員

雖然騰訊互娛,騰訊視頻,騰訊教育都歸屬阿里旗下,但每一個面試官問的問題都不同,相同點主要在流程方面。另外順便給你們推薦一個交流學習羣:812--855--908。面試開始會讓自我介紹,主要業務架構和技術架構兩部分。業務架構通常不會深究,但要面試官聽明白,而且通常面試官會順着問是如何根據這些業務去設計技術架構的。面試

技術架構部分,會根據自我介紹中提到的技術點問,是爲何使用這些技術,解決了哪些問題,碰到哪些困難,是如何思考和解決的,最後再順帶一些技術自己底層的設計方面的問題:redis

例如:有redis,會問哪些場景用,解決了什麼問題,數據量有多少,用的過程出現過哪些問題,怎麼去定位解決的,Redis緩存集羣一致性方案,還有沒有更好的方案,如何防止緩存擊穿。諸如此類的問題。算法

總結了面試官最喜歡問的方面有網絡IO模型,多線程和多進程的模型,好比reactor的設計模式,好比nginx的Master和worker進程設計如何處理驚羣問題,是否瞭解過協程的方案,除了互斥鎖方案,還有什麼併發方案呢?sql

無論哪一個技術點,能答到面試官沒法在這個問題上問下去了,或者能答到計算機硬件上就過了。 有不清楚的能夠直接回答,有一些不會的不影響整個面試。編程

面試準備設計模式

架構開發技術之路的學習經驗

想要了解架構技術知識點的,能夠關注我一下,我後續也會整理更多關於分佈式架構這一塊的知識點分享出來,另外順便給你們推薦一個交流學習羣:812-855-908,裏面會分享一些資深架構師錄製的視頻錄像:有DNS負載均衡,NGINX負載均衡等高併發的處理,TCP、epoll等技術應用,單臺百萬併發的實例講解,源碼分析,高併發、高性能、分佈式、微服務架構的原理,內存池性能優化這些成爲架構師必備的知識體系。還能領取免費的學習資源,目前受益良多,如下的知識體系圖也是在裙裏面獲取。

1、 閱讀源碼

閱讀、分析源碼是程序員最基本的碼代碼能力也是碼農的根本所在,學習經典源碼中所用到的經典設計思想及經常使用設計模式、高併發處理的一些數據結構,可以幫你瞭解大牛是如何寫代碼的,從而吸取大牛的代碼功力。在騰訊的面試中,libevent,nginx甚至是redis的源碼設計也是常常問的。

2、中間件開發

併發或者說並行編程幾乎是全部互聯網公司面試必問問題,併發編程後臺程序員最重要的基礎技能之一,多進程之間的通訊,線程池的設計,內存池的同步方案,用協程解決阻塞socket爲異步通訊以此提升併發能力等等,固然還包括經常使用的一些設計方案,好比C/C++和go等靜態變異的程序的熱更新方案,好比經過nginx或者etcd作A/B灰度發佈等; 好比高併發的的一些方案,NDS負載均衡,LVS+Nginx+Keepalived的方案,LVS的幾種工做模式,虛擬IP如何配置等等;除了這些還有網絡協議棧的,好比TCP的TIME_WAIT狀態是什麼意思,若是解決大量TIME_WAIT狀態的套接字等,還包括擁塞控制算法等等。

3、集羣專題

在解決大數據和可靠性設計的時候,都會進行服務器的集羣部署,比熱mysql集羣后的讀寫分離和分庫分表,binlog的同步機制,仍是健康檢查等;又好比redis集羣后的一致性方案,還有沒有比hash一致性方案更優的方案呢,redis的hash槽以及數據移動怎麼作?再好比zooKeeper的ZAB算法解決數據一致性,zooKeeper的原子性,利用zookeeper設計的分佈式鎖等等。

4、Linux系統和內核

應用程序的運行離不開對系統調用的依賴,做爲一個架構師或者技術專家,那是必須瞭解系統調用,好比read、write背後的文件系統提供的pagecache機制,好比malloc和free背後對應的brk和mmap操做的內存管理,好比虛擬內存,虛擬內存與物理內存的映射,好比huage page對內存管理的優化,甚至是NUMA體系結構,NUMA系統結構下的性能優化等等,不少同窗可能都知道epoll比起select和poll的性能要高一些,那麼epoll在內核層面是如何實現的呢?能不能徒手造個輪子實現epoll呢,以此更加理解epoll。

5、性能優化

性能一直是讓程序員比較頭疼的問題。當系統架構變得複雜而龐大以後,性能方面就會降低,特別是騰訊這樣的一線互聯網公司最爲注重,所以想進入騰訊,性能優化必定是要去深刻學習與理解的一環,本屌在性能優化這一塊雖然不能算專家,也能夠自信的說是精通了(注意:本身的簡歷上必定不要寫精通xxxx,要否則面試官會懟死你。好在本屌這一塊還算自信)全部的應用程序都在操做系統上運行,那麼如何優化應用程序性能呢?好比有哪些工具去查看系統性能貧瘠,好比磁盤IO,網絡協議棧的優化,甚至是使用KCP協議優化網絡傳輸。甚至是要了解硬件,好比多隊列網卡,好比用戶態協議棧等等。

6、分佈式架構

隨着公司業務壯大,架構也會隨之改變,經常使用的一個架構設計方法就是分層的架構思路,除了分層還會引入微服務的設計,這些架構設計裏通常都會涉及到API網關,服務動態路由,一致性,可靠性的設計,好比etcd、zk、grpc、thrift、openresty、主備切換、虛擬IP等等。

相關文章
相關標籤/搜索