一、Redis
1.redis 和 memcached 什么區(qū)別桑李?
2.為什么高并發(fā)下有時單線程的 redis 比多線程的memcached 效率要高烈炭?
3.redis 主從復(fù)制如何實現(xiàn)的?
4.redis 的集群模式如何實現(xiàn)顽聂?
5.redis 的 key 是如何尋址的逻淌?
6.使用 redis 如何設(shè)計分布式鎖么伯?說一下實現(xiàn)思路?使用 zk 可以嗎卡儒?如何實現(xiàn)田柔?這兩種有什么區(qū)別?
7.知道 redis 的持久化嗎骨望?底層如何實現(xiàn)的硬爆?有什么優(yōu)點(diǎn)缺點(diǎn)?
8.redis 過期策略都有哪些擎鸠?LRU 算法知道嗎缀磕?寫一下 java 代碼實現(xiàn)?
9.緩存穿透劣光、緩存擊穿袜蚕、緩存雪崩解決方案?
10.在選擇緩存時绢涡,什么時候選擇 redis牲剃,什么時候選擇 memcached
11.緩存與數(shù)據(jù)庫不一致怎么辦?
12.主從數(shù)據(jù)庫不一致如何解決
13.Redis 常見的性能問題和解決方案
14.Redis 的數(shù)據(jù)淘汰策略有哪些雄可?
15.Redis 當(dāng)中有哪些數(shù)據(jù)結(jié)構(gòu)凿傅?
16.假如 Redis 里面有 1 億個 key,其中有 10w 個 key 是以某個固定的已知的前綴開頭的滞项,如果將它們?nèi)空页鰜恚?/p>
二狭归、京東篇(40道)
1.給一個函數(shù)夭坪,返回 0 和 1文判,概率為 p 和 1-p,請你實現(xiàn)一個函數(shù)室梅,使得返回 01 概率一樣戏仓。
2.10 億個 url疚宇,每個 url 大小小于 56B,要求去重赏殃,內(nèi)存 4G敷待。
3.把一個 bst 轉(zhuǎn)化成一個雙向鏈表。
4.http 和 https 區(qū)別仁热,https 在請求時額外的過程榜揖,https 是如何保證數(shù)據(jù)安全的。
5.IP 地址子網(wǎng)劃分抗蠢。
6.POST 和 GET 區(qū)別举哟。
7.硬鏈接和軟連接區(qū)別。
8.DNS 解析過程迅矛。
9.kill 用法妨猩,某個進(jìn)程殺不掉的原因(進(jìn)入內(nèi)核態(tài),忽略 kill 信號)秽褒。
10.linux 用過的命令壶硅。
11.系統(tǒng)管理命令(如查看內(nèi)存使用、網(wǎng)絡(luò)情況)销斟。
12.管道的使用庐椒。
13.grep 的使用,一定要掌握蚂踊,每次都會問在文件中查找扼睬。
14.shell 腳本。
15.find 命令悴势。
16.awk 使用窗宇。
17.Linux 下的一些指令,(進(jìn)程id)特纤, (進(jìn)程 id)军俊,(進(jìn)程id),?(上一條命令退出時狀態(tài))捧存,怎么查看進(jìn)程粪躬,按照內(nèi)存大小,CPU 占用排序等等昔穴。(大寫 M 和大寫 P)镰官。
18.http 的 get 和 post 方法。
19.介紹下你所了解的 epoll吗货。
20.數(shù)據(jù)庫 sql 的了解程度泳唠。
21.項目中遇到的問題,自己咋解決的等等宙搬。
22.手寫一個全排列笨腥。
23.B樹和B+樹拓哺。
24.介紹一下 Hash,怎么解決沖突脖母。
25.進(jìn)程間的通信士鸥,共享內(nèi)存方式的優(yōu)缺點(diǎn)。
26.說下你平時看的一些技術(shù)博客谆级,書籍烤礁。
27.linux 下的一些指令。
28.工作中你覺得最不爽的事情是什么肥照。
29.說下你的優(yōu)缺點(diǎn)鸽凶。
30.有沒有想過去創(chuàng)業(yè)公司。
31.寫個 strcpy 函數(shù)建峭。
32.說說你自己的性格玻侥。
33.給你一個系統(tǒng)(面試官好像是無人車部門的),后臺的邏輯已經(jīng)實現(xiàn)了亿蒸,但是前端加載很慢凑兰,怎么檢測。
34.以后可能要學(xué)習(xí)很多新技術(shù)边锁,你怎么看姑食。
35.項目中遇到的困難(提前想好,并且把實現(xiàn)或者優(yōu)化方法說清楚)茅坛。
36.系統(tǒng)的量級音半、pv、uv 等贡蓖。
37.應(yīng)對高并發(fā)的解決辦法(分布式)曹鸠。
38.在項目中主要負(fù)責(zé)了哪些工作。
39.nginx 的負(fù)載均衡斥铺。
40.分布式緩存的一致性彻桃,服務(wù)器如何擴(kuò)容(哈希環(huán))。
三晾蜘、多線程
1.現(xiàn)在有 T1邻眷、T2、T3 三個線程剔交,你怎樣保證 T2 在 T1 執(zhí)行完后執(zhí)行肆饶,T3 在 T2 執(zhí)行完后執(zhí)行?
2.在 Java 中 Lock 接口比 synchronized 塊的優(yōu)勢是什么岖常?你需要實現(xiàn)一個高效的緩存驯镊,它允許多個用戶讀,但只允許一個用戶寫,以此來保持它的完整性阿宅,你會怎樣去實現(xiàn)它?
3.在 java 中 wait 和 sleep 方法的不同笼蛛?
4.用 Java 實現(xiàn)阻塞隊列
5.用 Java 寫代碼來解決生產(chǎn)者——消費(fèi)者問題
6.用 Java 編程一個會導(dǎo)致死鎖的程序洒放,你將怎么解決?
7.什么是原子操作滨砍,Java 中的原子操作是什么往湿?
8.Java 中的 volatile 關(guān)鍵是什么作用?怎樣使用它惋戏?在 Java 中它跟 synchronized 方法有什么不同领追?
9.什么是競爭條件?你怎樣發(fā)現(xiàn)和解決競爭响逢?
10.你將如何使用 threaddump绒窑?你將如何分析 Thread dump?
11.Java 中你怎樣喚醒一個阻塞的線程舔亭?
12.為什么我們調(diào)用 start()方法時會執(zhí)行 run()方法些膨,為什么我們不能直接調(diào)用 run()方法?
13.在 Java 中 CycliBarriar 和 CountdownLatch 有什么區(qū)別钦铺?
14.什么是不可變對象订雾,它對寫并發(fā)應(yīng)用有什么幫助?
15.你在多線程環(huán)境中遇到的常見的問題是什么矛洞?你是怎么解決它的洼哎?
16.使用synchronized修飾靜態(tài)方法和非靜態(tài)方法有什么區(qū)別。
17.簡述ConcurrentLinkedQueue和LinkedBlockingQueue的用處和不同之處沼本。
18.導(dǎo)致線程死鎖的原因噩峦?
19.怎么解除線程死鎖。
20.非常多個線程(可能是不同機(jī)器)抽兆,相互之間需要等待協(xié)調(diào)壕探,才能完成某種工作,問怎么設(shè)計這種協(xié)調(diào)方案郊丛。
21.用過讀寫鎖嗎李请,原理是什么,一般在什么場景下用厉熟。
22.開啟多個線程导盅,如果保證順序執(zhí)行,有哪幾種實現(xiàn)方式揍瑟,或者如何保證多個線程都執(zhí)行完再拿到結(jié)果白翻。
23.延遲隊列的實現(xiàn)方式,delayQueue和時間輪算法的異同。