主頁 > 作業系統 > 盤點騰訊Linux、 C++后臺開發面試題,做好充足準備,不怕被Pass

盤點騰訊Linux、 C++后臺開發面試題,做好充足準備,不怕被Pass

2020-10-30 22:52:00 作業系統


一、C/C++


 

?

const

多型

什么類不能被繼承

二、網路


 

?

網路的位元組序

網路知識 TCP三次握手 各種細節 timewait狀態

TCP與UDP的區別 概念 適用范圍

TCP四次揮手講一下程序,最后一次ack如果客戶端沒收到怎么辦,為什么揮手不能只有三次,為什么time_wait,

對于socket編程,accept方法是干什么的,在三次握手中屬于第幾次,可以猜一下,為什么這么覺得,

tcp怎么保證有序傳輸的,講下tcp的快速重傳和擁塞機制,知不知道time_wait狀態,這個狀態出現在什么地方,有什么用?

知道udp是不可靠的傳輸,如果你來設計一個基于udp差不多可靠的演算法,怎么設計?

http與https有啥區別?說下https解決了什么問題,怎么解決的?說下https的握手程序,

tcp 粘包半包問題怎么處理?

keepalive 是什么東東?如何使用?

列舉你所知道的tcp選項,并說明其作用,

socket什么情況下可讀?

nginx的epoll模型的介紹以及io多路復用模型

SYN Flood攻擊

流量控制,擁塞控制

TCP和UDP區別,TCP如何保證可靠性,對方是否存活(心跳檢測)

tcpdump抓包,如何分析資料包

tcp如何設定超時時間

基于socket網路編程和tcp/ip協議堆疊,講講從客戶端send()開始,到服務端recv()結束的程序,越細越好

http報文格式

http1.1與http1.0區別,http2.0特性

http3了解嗎

http1.1長連接時,發送一個請求阻塞了,回傳什么狀態碼?

udp呼叫connect有什么作用?

三、作業系統


 

?

行程和執行緒-分別的概念 區別 適用范圍 它們分別的通訊方式 不同通訊方式的區別優缺點

僵尸行程

死鎖是怎么產生的

CPU的執行方式

代碼中遇到行程阻塞,行程僵死,記憶體泄漏等情況怎么排查,

有沒有了解過協程?說下協程和執行緒的區別?

堆是執行緒共有還是私有,堆是行程共有還是私有,堆疊呢

了解過協程嗎

共享記憶體的使用實作原理

c++行程記憶體空間分布

ELF是什么?其大小與程式中全域變數的是否初始化有什么關系

使用過哪些行程間通訊機制,并詳細說明

多執行緒和多行程的區別(重點 面試官最最關心的一個問題,必須從cpu調度,背景關系切換,資料共享,多核cup利用率,資源占用,等等各方面回答,然后有一個問題必須會被問到:哪些東西是一個執行緒私有的?答案中必須包含暫存器,否則悲催)

信號:列出常見的信號,信號怎么處理?

i++是否原子操作?并解釋為什么???????

說出你所知道的各類linux系統的各類同步機制(重點),什么是死鎖?如何避免死鎖(每個技術面試官必問)

列舉說明linux系統的各類異步機制

exit() _exit()的區別?

如何實作守護行程?

linux的記憶體管理機制是什么?

linux的任務調度機制是什么?

標準庫函式和系統呼叫的區別?

系統如何將一個信號通知到行程?

四、Linux系統


 

?

linux的各種命令 給你場景讓你解決

Linux了解么,查看行程狀態ps,查看cpu狀態 top,查看占用埠的行程號netstat grep

Linux的cpu 100怎么排查,top jstack,日志,gui工具

Linux作業系統了解么

怎么查看CPU負載,怎么查看一個客戶下有多少行程

Linux內核是怎么實作定時器的

gdb怎么查看某個執行緒

core dump有沒有遇到過,gdb怎么除錯

linux如何設定core檔案生成

linux如何設定開機自啟動

linux用過哪些命令、工具

用過哪些工具檢測程式性能,如何定位性能瓶頸的地方

netstat tcpdump ipcs ipcrm

cpu 記憶體 硬碟 等等與系統性能除錯相關的命令必須熟練掌握,設定修改權限 tcp網路狀態查看 各行程狀態 抓包相關等相關命令 必須熟練掌握

awk sed需掌握

gdb除錯相關的經驗,會被問到


 

五、MongoDB

關于大資料存盤的(mongodb hadoop)各種原理 mongodb又問的深入很多

六、Redis

Redis記憶體資料庫的記憶體指的是共享記憶體么

Redis的持久化方式

Redis和MySQL有什么區別,用于什么場景,

redis有沒有用過,常用的資料結構以及在業務中使用的場景,redis的hash怎么實作的

問了下快取更新的模式,以及會出現的問題和應對思路?

redis的sentinel上投票選舉的問題 raft演算法

redis單執行緒結構有什么優勢?有什么問題? 主要優勢單執行緒,避免執行緒切換產生靜態消耗,缺點是容易阻塞,雖然redis使用io復用epoll和輸入緩沖區把命令按照佇列先進先出輸入等等

你覺得針對redis這些缺點那些命令在redis上不可使用? 比如keys、hgetall等等這些命令 建議用scan等等 這方面闡述

你覺得為什么專案中沒有用mysql而用了es,redis在這里到底起到了什么作用?因為架構上這里理解不清楚,最后回答自己都覺得有漏洞了

你覺得redis什么算有用? 有用? 是說存進去了還是說命中快取?最后把快取命中率是什么說了一遍

你們這邊redis集群是怎么樣子的

平常redis用的多的資料結構是什么,跳表實作,怎么維護索引,當時我說是一個簡單的二分,手寫二分演算法,并且時間復雜度是怎么計算出來的 (2的k次方等于n k等于logn)


 

?

七、MySQL

你們后端用什么資料庫做持久化的?有沒有用到分庫分表,怎么做的?

索引的常見實作方式有哪些,有哪些區別?MySQL的存盤引擎有哪些,有哪些區別?InnoDB使用的是什么方式實作索引,怎么實作的?說下聚簇索引和非聚簇索引的區別?

mysql查詢優化

MySQL的索引,B+樹性質,

B+樹和B樹,聯合索引等原理

mysql的悲觀鎖和樂觀鎖區別和應用,ABA問題的解決

專案性能瓶頸在哪,資料庫表怎么設計

假設專案的性能瓶頸出現在寫資料庫上,應該怎么解決峰值時寫速度慢的問題

假設資料庫需要保存一年的資料,每天一百萬條資料,一張表最多存一千萬條資料,應該怎么設計表

資料庫自增索引,100臺服務器,每臺服務器有若干個用戶,用戶有id,同時會有新用戶加入,實作id自增,統計用戶個數?不能重復,好像是這樣的,

mysql,會考sql語言,服務器資料庫大規模資料怎么設計,db各種性能指標


 

?

八、演算法

堆疊

有序陣列排序,二分,復雜度

常見排序演算法,說下快排程序,時間復雜度

有N個節點的滿二叉樹的高度,1+logN

如何實作關鍵字輸入提示,使用字典樹,復雜度多少,有沒有其他方案,答哈希,如果是中文呢,分詞后建立字典樹?

hashmap的實作講一下吧,講的很詳細了,講一下紅黑樹的結構,查詢性能等,

快排的時間復雜度,冒泡時間復雜度,快排是否穩定,快排的程序

100w個數,怎么找到前1000個最大的,堆排序,怎么構造,怎么調整,時間復雜度,

一個矩陣,從左上角到右下角,每個位置有一個權值,可以上下左右走,到達右下角的路徑權值最小怎么走,

四輛小車,每輛車加滿油可以走一公里,問怎么能讓一輛小車走最遠,說了好幾種方案,面試官引導我優化了一下,但是還是不滿意,最后他說跳過,

MySQL的索引,B+樹性質,

十億和數找到前100個最大的,堆排序,怎么實作,怎么調整,

布隆過濾器

hash表解決沖突的方法

跳表插入洗掉程序

讓你實作一個哈希表,怎么做


 

?

九、設計模式

對于單例模式,有什么使用場景了,講了全域id生成器,他問我分布式id生成器怎么實作,說了zk,問我zk了解原理不,講了zab,然后就沒問啦,

除了單例模式,知道配接器模式怎么實作么,有什么用

十、分布式架構

CAP BASE理論

看你專案里面用了etcd,講解下etcd干什么用的,怎么保證高可用和一致性?

既然你提到了raft演算法,講下raft演算法的基本流程?raft演算法里面如果出現腦裂怎么處理?有沒有了解過paxos和zookeeper的zab演算法,他們之前有啥區別?

rpc有沒有了解

十一、系統設計

朋友之間的點對點關系用圖維護,怎么判斷兩人是否是朋友,并查集,時間復雜度,程序,

10g檔案,只有2g記憶體,怎么查找檔案中指定的字串出現位置,

Linux大檔案怎么查某一行的內容,

秒殺系統的架構設計

十億個數的集合和10w個數的集合,如何求它們的交集,

針對自己最熟悉的專案,畫出專案的架構圖,主要的資料表結構,專案中使用到的技術點,專案的總峰值qps,時延,以及有沒有分析過時延出現的耗時分別出現在什么地方,專案有啥改進的地方沒有?

如果請求出現問題沒有回應,如何定位問題,說下思路?

除了公司專案之外,業務有沒有研究過知名專案或做出過貢獻?

go程和執行緒有什么區別?

服務器CPU 100%怎么定位?

設計一個限流的演算法

定時器除了小根堆,還可以怎么做

專案性能瓶頸在哪,資料庫表怎么設計

在高并發的生產環境中(非除錯場景下),如果出現資料包的丟失,如何定位問題

一個每秒百萬級訪問量的互聯網服務器,每個訪問都有資料計算和I/O操作,如果讓你設計,你怎么設計?


 

總結

tcp/udp,http和https還有網路這塊(各種網路模型,已經select,poll和epoll)一定要非常熟悉

一定要有拿的出手的專案經驗,而且要能夠講清楚,講清楚專案中取舍,設計模型和資料表

分布式要非常熟悉

常見問題定位一定要有思路

作業系統,還是作業系統,重要的事情說三遍

系統設計,思路,思路,思路,一定要思路清晰,一定要總結下系統設計的流程

一點很重要的心得,平時blog和專欄看的再多,如果沒有自己的思考不過是過眼云煙,根本不會成為自己的東西,就像內核態和用戶態,平常也看過,但是沒細想,突然要自己說,還真說不出來,這就很尷尬了,勿以浮沙筑高臺,基礎這種東西還是需要時間去慢慢打牢,多去思考和總結,

 

C/C++Linux高級開發路線

對標騰訊C++后端開發

如果你對編程感興趣,想要深入學習,這里分享素材包及學習資源,還有免費教程哦


 

(包含C語言、C++、Windows、Qt、Linux相關知識點)~不論是小白還是進階者,在這里都能獲得成長,

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

標籤:其他

上一篇:SDRAM記憶體條時序特點

下一篇:干貨分享:神了!在Win上用CMD命令或WSL創建任意檔案

標籤雲
其他(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)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [root@67 flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:43:21 more
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:42:36 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:26:53 more
  • 設定Windows主機的瀏覽器為wls2的默認瀏覽器

    這里以Chrome為例。 1. 準備作業 wsl是可以使用Windows主機上安裝的exe程式,出于安全考慮,默認情況下改功能是無法使用。要使用的話,終端需要以管理員權限啟動。 我這里以Windows Terminal為例,介紹如何默認使用管理員權限打開終端,具體操作如下圖所示: 2. 操作 wsl ......

    uj5u.com 2023-04-19 09:25:49 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:19:04 more
  • Linux學習筆記

    IP地址和主機名 IP地址 ifconfig可以用來查詢本機的IP地址,如果不能使用,可以通過install net-tools安裝。 Centos系統下ens33表示主網卡;inet后表示IP地址;lo表示本地回環網卡; 127.0.0.1表示代指本機;0.0.0.0可以用于代指本機,同時在放行設 ......

    uj5u.com 2023-04-18 06:52:01 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:50 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:01 more
  • 你是不是暴露了?

    作者:袁首京 原創文章,轉載時請保留此宣告,并給出原文連接。 如果您是計算機相關從業人員,那么應該經歷不止一次網路安全專項檢查了,你肯定是收到過資訊系統技術檢測報告,要求你加強風險監測,確保你提供的系統服務堅實可靠了。 沒檢測到問題還好,檢測到問題的話,有些處理起來還是挺麻煩的,尤其是線上正在運行的 ......

    uj5u.com 2023-04-05 16:52:56 more
  • 細節拉滿,80 張圖帶你一步一步推演 slab 記憶體池的設計與實作

    1. 前文回顧 在之前的幾篇記憶體管理系列文章中,筆者帶大家從宏觀角度完整地梳理了一遍 Linux 記憶體分配的整個鏈路,本文的主題依然是記憶體分配,這一次我們會從微觀的角度來探秘一下 Linux 內核中用于零散小記憶體塊分配的記憶體池 —— slab 分配器。 在本小節中,筆者還是按照以往的風格先帶大家簡單 ......

    uj5u.com 2023-04-05 16:44:11 more