主頁 > 軟體設計 > 已拿騰訊后臺開發崗offer,簡單說下自己的面試經歷和學習路線

已拿騰訊后臺開發崗offer,簡單說下自己的面試經歷和學習路線

2020-12-05 13:10:50 軟體設計

面前準備

敲定了方向和目標后就開始系統準備,主要分為以下幾個方面來準備,

演算法題

事先已經看過別人的社招面經知道頭條每輪技術面都有演算法題,而這一塊平時練習的比較少,校招時刷的題也忘記了很多,因此系統復習的時候演算法題還是花了比較多時間的,先是快速刷完了劍指 offer,這個校招時已經刷過兩邊了,因此現在刷起來會相對快一些,然后就是啃 LeetCode 的題了,LeetCode 的題比較多,想在短短幾周內刷完基本是不可能的,因此我主要按照型別去刷,每個型別刷幾道就會比較有感覺了,比如鏈表的題優先考慮遞回和雙指標來解決,堆疊和佇列的題優先考慮用兩個堆疊或佇列來解決,樹的題基本都是遞回等,不過陣列和字串的題一般比較靈活,這種題只能盡量多刷了,平時要上班刷題也不方便,我采用的方法就是看題,用手機打開 LeetCode 的網站,看完題目后直接想解決方案,腦子里大概捋一下代碼怎么寫,能想到的就過,想不出的就看看別人的解法,用這個方法刷起來就很快,用這種方法你可能會擔心面試時題寫不完整,其實不用太擔心,因為面試的時候面試官看你寫的核心思路是正確的,邊界處理是對的基本就過了,面試時間比較有限,

理論基礎

基礎這一塊主要以快速復習為主,主要是語言(我主要用C++,所以復習C++)、作業系統和網路編程,校招這一塊會問題的比較多,社招這一塊問的比較少,但是如果這一塊打不上來就比較尷尬了,語言就不說了,這一塊大家應該都知道會考些什么,校招的時候畢竟都瘋狂準備過,作業系統就看記憶體管理、行程管理和檔案系統,一般虛擬記憶體問的多,網路編程這塊就包括 TCP/IP 協議,HTTP協議,網路安全三個方面,TCP/IP主要就是三次握手,四次揮手,TIME_WAIT 的作用等這些常考的題了,HTTP 協議考察 HTTP 協議的回傳碼、HTTP 的方法等,需要特別指出的是 HTTPS 加密的詳細程序要非常透徹,不然容易產生一種感覺好像都清楚了,但是一問就有點說不清楚,最后就是網路安全,主要考察也是 WEB 安全,包括XSS,CSRF,SQL注入等,

后端技術

這里的后端技術主要指作業中要用到的一些基礎組件,一些常見的后端架構設計,主要準備了MySQL、Redis、訊息佇列、zookeeper、分布式系統架構設計和docker,MySQL 主要看了 《高性能MySQL 第三版》,關于事務、索引、鎖以及 binlog 和 redolog 都講的非常好,也是面試最愛考的,除此之外對資料庫的讀寫分離、分庫分表也要掌握,Redis 主要看了《Redis 的設計與實作》,然后自己再總結了一下 Redis 的使用場景,以及 Redis 實作分布式鎖基本 Redis 就沒有問題了,分布式系統的就準備CAP理論、BASE理論、限流、熔斷、一致性***演算法、主從架構、集群架構、異地多活、負載均衡、分層架構、微服務等,

深挖專案

沒有參與開源專案的經驗,作業中做的專案也很一般,專案這塊我實在沒什么太多拿的出手的,不過還是要挖掘一下,畢竟這一塊是逃不掉,我說幾個我思考的點吧:
找專案中相對而言具有亮點的地方,比如我用 redis 實作了一個延時佇列,然后對這個延時佇列我通過分片來解決瓶頸,通過分發來加快處理速度,
找專案中復雜的地方,如果你做的專案中有復雜的地方,即使不是你做的,也可以拿來說,前提是你要搞得非常清楚來,
量化指標,一個介面原來有性能問題,比如你做了一個小的優化,將其 TP99 的耗時從原來的 500ms 優化至多少 200ms,
賦能整個團隊,在開發業務的程序中肯定會遇到一些重復的作業,或者可以復用的服務,你可以開發了某個工具或者服務化了某個功能推廣到了全組使用,給公司創造了價值,
騰訊面試
騰訊面試提前1天和提前一個小時都會發短信提示,去的騰訊濱海大廈面試,大樓的現代化程度很高,不過需要提醒一下的是,騰訊的濱海大廈分為南塔和北塔,我去的時候就上錯樓了,需要下到4樓重新換成電梯,

筆試

微服務的特點,如何實作服務發現和負載均衡
c++記憶體管理
time_wait在哪一端產生,作用是什么
程式crash如何定位
服務性能問題如何定位
兩個排序陣列找中位數
就數字n的平方根
設計一個演算法,抽獎次數越多中獎概率就越高
MySQL 如何分析一條陳述句的執行程序,delete from t1 limit 3和delete from t1的區別?

一面

問專案
跳臺階
陣列中奇數個元素
一棟樓有n層,不知道雞蛋從第幾層扔下去會碎,用最少的次數找出剛好會碎的樓層
動態規劃與貪心有什么區別
redis資料結構的底層實作
redis如何實作高可用
負載均衡演算法有哪些
服務發現是怎么實作的
熔斷是怎么實作的
id生成器怎么實作的,如何實作全域遞增
協程和執行緒的區別
行程間通訊方法
平時逛哪些論壇,研究哪些演算法
paxos演算法,這個演算法我說不清楚,然后說了raft演算法
gdb怎么切換執行緒
如何判斷一個圖是否有環
介紹一下快取
查看 CPU 的命令和磁盤 IO 的命令

二面

專案的系統架構畫一下
如果用戶量上漲怎么優化
負載均衡的加權輪詢演算法怎么實作
背包問題
貝葉斯的概率學原理
分詞演算法
連續整數求和(leetcode 第 829 題),要求時間復雜度小于O(N)

HR面

1.詢問了除騰訊以外,還在看其他作業機會么?分別是什么
2.騰訊、XXX公司、XXX公司,你的優先級是什么,為什么?
3.之前薪資待遇是多少?你期望的薪資是多少?
4.平時有什么愛好?
5.了解職位需求嗎?
6.有沒有想問的?

騰訊二面最后一道演算法題只能想出 O(N) 復雜度的,面試官一定要小于 O(N) 的,答不上來,這道題是 leetcode hard 級別的難度,所以沒有刷,后來又跟面試官探討了一下自己比較擅長的方面,比如協程與TCP方面的,因為自己也比較喜歡在GitHub上面鉆研這些東西,
協程
TCP
我個人在這里學到的東西比較多(/狗頭)

技術知識學習路線

【文章福利】小編推薦自己的linuxC/C++語言交流群:832218493!整理了一些個人覺得比較好的學習書籍、視頻資料共享在里面,有需要的可以自行添加哦!~
在這里插入圖片描述
在這里插入圖片描述

一、 資料結構與演算法、設計模式、工程管理

排序 (11種排序) 與 KMP
紅黑樹 證明
B樹與B+樹
Hash與布隆過濾器
責任鏈模式
過濾器模式
發布訂閱模式
工廠模式
Makefile/cmake/configure
git /svn與持續集成
Linux系統運行時命令

二、代碼實作、方案分析

網路io與select/poll/epoll
reactor的原理與實作
http/https web服務器的實作
websocket協議與服務器實作
服務器百萬并發的實現(c10K,c1000k, C10M)
redis/memcached/Nginx網路組件
Posix API與網路協議堆疊
UDP可靠協議 QUIC/KCP

三、池式結構、高性能組件、開源組件

執行緒池(手寫)
記憶體池 ringbuffer
異步請求池 性能優化,異步mysql 異步dns 異步redis
mysql連接池
redis連接池
原子操作 CAS
訊息佇列與無鎖佇列
定時器的方案 紅黑樹 時間輪 最小堆
鎖的實作原理 互斥鎖,自旋鎖 ,樂觀鎖,悲觀鎖,分布式鎖
服務器連接保活 keepalived
try/catch的實作
libevent/libev框架
異步日志方案 log4cpp
應用層協議 protobuf/thrift
openssl加密
json與xml決議器
字符編碼unicode/gbk/utf-

四、協程框架的實作、用戶態協議堆疊 NtyTCP (tcp/ip)

協程的原理與工程案例
協程的調度器實作
滑動視窗 擁塞控制 滿啟動
tcp定時器的實作
epoll的原始碼實作

五、Skynet、ZeroMQ、DPDK

skynet高性能網關
actor實作與cluster/負載均衡
skynet網路與熱更新 資料共享
ZeroMQ Router-Dealter模式
原始碼分析:訊息模型與工程案例
原始碼分析:網路機制
dpdk PCI原理與 testpmd/l3fwd/skeletion
kni資料流程
dpdk實作dns
dpdk的高性能網關的實作
半虛擬化 virtio/vhost的加速

六、 MySQL、Redis、Nginx、mongodb、dfs

SQL陳述句 索引 存盤程序 觸發器
2.資料庫連接池與sql決議剖析
存盤引擎原理 MyISAM與Innodb 事務隔離
自己實作一個存盤引擎 MySQL原始碼
MySQL集群與分布式 高可用高并發
Redis相關命令與持久化
Redis連接池與異步操作
原始碼分析:存盤原理與資料模型
原始碼分析:主從 原子模型
redis的集群方案
Nginx使用conf配置
nginx模塊開發 過濾器模塊
Nginx模塊開發 handler模塊
原始碼分析: Nginx Http狀態機
原始碼分析:行程間通信與Slab共享機制
Mongo介面編程與MongoDB命令使用
MongoDB的集群方案
ceph
fastdfs

七、Linux內核行程管理、記憶體管理、檔案系統

行程管理與調度
鎖與行程間通信
系統呼叫 如何自己實作一個syscall
物理記憶體 伙伴演算法
2.行程虛擬記憶體 mm_struct
頁的回收與頁交換
虛擬檔案系統
Ext2/3/4 檔案系統
無持久的存盤

八、性能分析

工具 wrk/ webbench/ loadbalance/valgrind
Google gTest/Memtrack
火焰圖/熱圖

九、分布式架構篇

騰訊的Tars
虛擬化的docker
分布式注冊中心etcd
P2P 網路穿透 打洞 去中心化的網路
在這里插入圖片描述
榷訓月累,終有所成!!!

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/230272.html

標籤:其他

上一篇:Java架構師的薪資代表著高水平?那么這份3.84G的P8架構師知識體系你能掌握多少?

下一篇:天天CRUD,被領導懟,我是如何從小公司菜雞到阿里P8架構師?,首次分享Java程式員黃金五年進階心得

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more