網(wǎng)絡(luò)&操作系統(tǒng)
1.進程通信的方式有哪些,linux中管道的底層原理
管道、消息隊列、共享內(nèi)存、信號量、信號、socket
要知道管道、消息隊列、共享內(nèi)存的本質(zhì):內(nèi)存本質(zhì)、效率以及傳輸數(shù)據(jù)的要求,各種方式使用
http://www.itdecent.cn/p/376b8ac0e461
2.tcp三次握手和四次揮手,四次握手流程,說一下 time_wait
http://www.itdecent.cn/p/186485ef5e5e
TCP四次揮手,結(jié)合CS兩端點的TCP棧和上層應(yīng)用的交互來解釋四次揮手,以及為何需要中間那個FIN-WAIT-2這個過程,最后由被動關(guān)閉一方的上層應(yīng)用通過調(diào)用socket.closed()來結(jié)束數(shù)據(jù)傳輸,進入最終的FIN模式;
3.tcp傳輸中慢啟動原理
http://www.itdecent.cn/p/f95f64711902
慢啟動,是TCP 協(xié)議為了保證可靠性傳輸而設(shè)計的擁塞控制策略中的一個算法,什么是擁塞控制?定義:當網(wǎng)絡(luò)擁堵時,TCP會出現(xiàn)超時、丟失情況,觸發(fā)重傳數(shù)據(jù),但是這會導(dǎo)致情況加劇,TCP 犧牲自己降低發(fā)送數(shù)量為,叫做擁塞控制。
TCP 擁塞控制、重傳機制、滑動窗口、流量控制的關(guān)系(https://mp.weixin.qq.com/s/Tc09ovdNacOtnMOMeRc_uA)
tcp重傳??http://www.itdecent.cn/p/9f7ff80b9d3d
4.一個 10M 大小的 buffer 里存滿了數(shù)據(jù),現(xiàn)在要把這個 buffer 里的數(shù)據(jù)盡量發(fā)出去,可以允許部分丟包,問是用TCP好還是UDP好?為什么?
tcp,udp傳輸?shù)氖菆笪?,每個包都一樣大小,最大報文長度1472,大于就把數(shù)據(jù)分片,但不允許中間有包丟失,否則接收端協(xié)議棧不能組合完整數(shù)據(jù)
5.https原理
HTTPS 加密過程,需要幾次通信
http與https的區(qū)別,加密怎么加的?
http各種返回碼,401和406啥區(qū)別?
Https的過程講一下。先是說了http+ssl,dns之后,準備講ssl的原理時,他示意我說回答一下傳輸層相關(guān)的。然后我就回答了tcp三次握手,對著服務(wù)器端指定端口,比如80端口發(fā)起連接,之后就是正常的數(shù)據(jù)請求了
https://mp.weixin.qq.com/s/bUy220-ect00N4gnO0697A
6.完整HTTP 請求涉及哪些協(xié)議?
https://mp.weixin.qq.com/s/bUy220-ect00N4gnO0697A
6打開一個 URL 的過程??https://mp.weixin.qq.com/s/iSZp41SRmh5b2bXIvzemIw
7.進程的調(diào)度:http://www.itdecent.cn/writer#/notebooks/37032437/notes/80945566(待發(fā)布)
8.操作系統(tǒng)內(nèi)存模型?哪些區(qū)具體放什么?
虛擬地址、物理地址
內(nèi)核地址空間、用戶地址空間、
進程內(nèi)存空間模型:代碼段、數(shù)據(jù)段、棧、堆等
http://www.itdecent.cn/p/97d2ce61f64a
9.linux 里,被打開文件可以被另一進程刪除嗎?
不會真正刪除,linux 有 2 個刪除文件函數(shù):
int unlink(const char *pathname);??刪除文件系統(tǒng)中名字,如名字是文件最后一個link 且 該文件沒被打開,刪除。否則等關(guān)閉或最后link被刪除,釋放空間
int rmdir(const char *pathname);????只目錄空時,才能刪除
https://blog.csdn.net/weiwangchao_/article/details/94578327
https://www.cnblogs.com/StartoverX/p/4600866.html
10.linux中seletc和epoll原理
http://www.itdecent.cn/p/4bca399daca3
二、db? redis:
1、為什么 mysql 用 B+ 樹,mongodb 用 B 樹?http://www.itdecent.cn/p/9916e4483905
2、用過哪些鎖,自旋鎖和互斥鎖區(qū)別?http://www.itdecent.cn/p/7c5e28d839bb
3、mysql 主從同步怎么搞的?分哪幾個過程?新機器要加到從機里,怎么個過程?
同步:http://www.itdecent.cn/p/3fae2a45623f
擴容:http://www.itdecent.cn/p/340d0b207a04
4、binlog 日志是 master 推的還是 salve 來拉?s拉,http://www.itdecent.cn/p/dacea10cbddb
5、mysql,redis, zookeeper 分布式鎖優(yōu)缺點? ?http://www.itdecent.cn/p/914c738d29f3
6、redis setnx + expire 有什么缺點,如何優(yōu)化? ?http://www.itdecent.cn/p/e6548912893b
7、redis 跳表,為什么不用紅黑樹?http://www.itdecent.cn/p/0fd6de64bcbf
8、redis 集群怎么實現(xiàn),說下一致性 hash
9、zset 延時隊列怎么實現(xiàn)?
http://www.itdecent.cn/p/326052101b6c
http://www.itdecent.cn/p/072ecd523590
10、ZSET 做排行榜,分數(shù)相同時,按時間順序排序怎么實現(xiàn)?說了一個將 score 拆成高 32 位和低 32 位,高 32 位存分數(shù),低 32 位存時間的方法
11、讓你設(shè)計一個限流的系統(tǒng)怎么做?令牌桶
12、讓你設(shè)計一個延時任務(wù)系統(tǒng)怎么做 說了兩個方案,一個是使用 redis 的 ZSET 來實現(xiàn),考慮分片來抗高并發(fā),使用 redis 的持久化來實現(xiàn)落地,使用 redis 的哨兵實現(xiàn)故障轉(zhuǎn)移。一個是使用時間輪的方法。
中間件
DUBBO的底層原理
rabbitmq 的工作原理
kafka 工作原理,如何保證順序等
Kafka 選主怎么做的?
kafka 分區(qū)怎么同步的
kafka 為什么可以扛住這么高的qps
kafka partition broker consumer consumer group topic 等都是啥關(guān)系?
Netty的IO原理,答:Reactor反應(yīng)模型,Linux那邊叫做IO多路復(fù)用。一個線程用來接收請求,將讀寫事件交給背后的worker線程。Redis、Nginx、Netty都是用到了這種模型。Redis其實也是多線程,只不過是用單線程來接收請求,在客戶端看起來是串行接收執(zhí)行,所以效果上就是單線程。但是IO多路復(fù)用才是Redis能高并發(fā)的底層保證
系統(tǒng)設(shè)計
海量的評論系統(tǒng)。這部分一共聊了近 20 分鐘
設(shè)計海量日志系統(tǒng)
微信朋友圈系統(tǒng),列出主要的表結(jié)構(gòu),只需要實現(xiàn)一些基礎(chǔ)的功能,比如聊天列表等。寫出一些數(shù)據(jù)結(jié)構(gòu)
設(shè)計一個長鏈接轉(zhuǎn)短鏈接,不過需要考慮高并發(fā),回答了分庫分表
算法:
實現(xiàn)簡單令牌桶算法,沒有考慮隨時間滑動的情況;
加強版:令牌桶,加上隨時間滑動的要求,即:限制用戶在任一連續(xù)的一小時內(nèi),不能超過5W的請求。這邊提到了說將一小時分成多格,比如60格這樣的,面試官點頭貌似同意了,然后就實現(xiàn)代碼了,包括協(xié)程異步更新時間窗口;
把一個方程式設(shè)計成樹以及很多的 follow up?
①給你一個整數(shù) n,使得從 n 中刪除 k 個數(shù)字之后的數(shù)字最大
二叉樹中和為K的所有路徑
鏈表表示的兩個數(shù)相加
股票買賣,一次和無限次兩
給定一個數(shù)組代表股票每天的價格,請問只能買賣一次的情況下,最大化利潤是多少?日期不重疊的情況下,可以買賣多次呢?
輸入: {100, 80, 120, 130, 70, 60, 100, 125}
1)只能買一次:65(60 買進,125 賣出)
2)可以買賣多次: 115(80買進,130賣出;60 買進,125賣出)
輸出買賣的序列和最大利潤
求一個有序整數(shù)數(shù)組中和為K的數(shù)的對數(shù)

給出兩個 非空 的鏈表用來表示兩個非負的整數(shù)。其中,它們各自的位數(shù)是按照 逆序 的方式存儲的,并且它們的每個節(jié)點只能存儲 一位 數(shù)字。
如果,我們將這兩個數(shù)相加起來,則會返回一個新的鏈表來表示它們的和。
? 您可以假設(shè)除了數(shù)字 0 之外,這兩個數(shù)都不會以 0 開頭。
? 示例:
? 輸入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
? 輸出:7 -> 0 -> 8
? 原因:342 + 465 = 807
兩個單向鏈表,返回求和后的鏈表結(jié)構(gòu),例如2->3->1->5,和3->6,結(jié)果返回2->3->5->1
一個無序數(shù)組找其子序列構(gòu)成的和最大,要求子序列中的元素在原數(shù)組中兩兩都不相鄰
現(xiàn)有一個隨機數(shù)生成器可以生成0到4的數(shù),現(xiàn)在要讓你用這個隨機數(shù)生成器生成0到6的隨機數(shù),要保證生成的數(shù)概率均勻。
有 N 枚棋子,每個人一次可以拿1到 M 個,誰拿完后棋子的數(shù)量為0誰就獲勝?,F(xiàn)在有1000顆棋子,每次最多拿8個,A 先拿,那么 A 有必勝的拿法嗎?第一個人拿完后剩余棋子的數(shù)量是8的倍數(shù)就必勝,否則就必輸。
給出一棵二叉樹的根節(jié)點,現(xiàn)在有這個二叉樹的部分節(jié)點,要求這些節(jié)點最近的公共祖先
1.https://blog.csdn.net/weixin_33805152/article/details/106618948;
2. https://leetcode-cn.com/circle/discuss/A0YstA/;
3. https://www.nowcoder.com/discuss/476824?type=post&order=time&pos=&page=1&channel=-2&source_id=search_post&subType=2;
4. https://www.sohu.com/a/404254709_463974
演拉登的題:
1、操作系統(tǒng)中斷時,保存上下文保存的都是什么內(nèi)容
2、print f輸出輸入時,程序怎么運行,操作系統(tǒng)底層在干嘛
3、Java里邊的future等待時候底層在干嘛,操作系統(tǒng)在干嘛
4、紅黑樹原理,證明紅黑樹查找logn
5、序列化和反序列化????https://leetcode-cn.com/problems/xu-lie-hua-er-cha-shu-lcof/submissions/
6、兩個線程并發(fā)輸出,1到100,怎樣才能保證輸出按順序
