天天看點

校招面試題目整理(無答案/自用)

MySQL

1. MySQL 索引使用有哪些注意事項呢?

2. MySQL 遇到過死鎖問題嗎,你是如何解決的?

3. 日常工作中你是怎麼優化SQL的?

4. 說說分庫與分表的設計

5. InnoDB與MyISAM的區

6. 資料庫索引的原理,為什麼要用 B+樹,為什麼不用二叉樹?

7. 聚集索引與非聚集索引的差別

8. limit 1000000 加載很慢的話,你是怎麼解決的呢?

9. 如何選擇合适的分布式主鍵方案呢?

10. 事務的隔離級别有哪些?MySQL的預設隔離級别是什麼?

11. 什麼是幻讀,髒讀,不可重複讀呢?

12. 在高并發情況下,如何做到安全的修改同一行資料?

13. 資料庫的樂觀鎖和悲觀鎖。

14. SQL優化的一般步驟是什麼,怎麼看執行計劃(explain),如何了解其中各個字段的含義。

15. select for update有什麼含義,會鎖表還是鎖行還是其他。

16. MySQL事務得四大特性以及實作原理

17. 如果某個表有近千萬資料,CRUD比較慢,如何優化。

18. 如何寫sql能夠有效的使用到複合索引。

19. mysql中in 和exists的差別。

20. 資料庫自增主鍵可能遇到什麼問題。

21. MVCC熟悉嗎,它的底層原理?

22. 資料庫中間件了解過嗎,sharding jdbc,mycat?

23. MYSQL的主從延遲,你怎麼解決?

24. 說一下大表查詢的優化方案

25. 什麼是資料庫連接配接池?為什麼需要資料庫連接配接池呢?

26. 一條SQL語句在MySQL中如何執行的?

27. InnoDB引擎中的索引政策,了解過嗎?

28. 資料庫存儲日期格式時,如何考慮時區轉換問題?

29. 一條sql執行過長的時間,你如何優化,從哪些方面入手?

30. MYSQL資料庫伺服器性能分析的方法指令有哪些?

31. Blob和text有什麼差別?

32. mysql裡記錄貨币用什麼字段類型比較好?

33. Mysql中有哪幾種鎖,列舉一下?

34. Hash索引和B+樹差別是什麼?你在設計索引是怎麼抉擇的?

35. mysql 的内連接配接、左連接配接、右連接配接有什麼差別?

36. 說說MySQL 的基礎架構圖

37. 什麼是内連接配接、外連接配接、交叉連接配接、笛卡爾積呢?

38. 說一下資料庫的三大範式

39. mysql有關權限的表有哪幾個呢?

40. Mysql的binlog有幾種錄入格式?分别有什麼差別?

41. InnoDB引擎的4大特性,了解過嗎

42. 索引有哪些優缺點?

43. 索引有哪幾種類型?

44. 建立索引有什麼原則呢?

45. 建立索引的三種方式

46. 百萬級别或以上的資料,你是如何删除的?

47. 什麼是最左字首原則?什麼是最左比對原則?

48. B樹和B+樹的差別,資料庫為什麼使用B+樹而不是B樹?

49. 覆寫索引、回表等這些,了解過嗎?

50. B+樹在滿足聚簇索引和覆寫索引的時候不需要回表查詢資料?

51. 何時使用聚簇索引與非聚簇索引

52. 非聚簇索引一定會回表查詢嗎?

53. 組合索引是什麼?為什麼需要注意組合索引中的順序?

54. 什麼是資料庫事務?

55. 隔離級别與鎖的關系

56. 按照鎖的粒度分,資料庫鎖有哪些呢?鎖機制與InnoDB鎖算法

57. 從鎖的類别角度講,MySQL都有哪些鎖呢?

58. MySQL中InnoDB引擎的行鎖是怎麼實作的?

59. 什麼是死鎖?怎麼解決?

60. 為什麼要使用視圖?什麼是視圖?

61. 視圖有哪些特點?哪些使用場景?

62. 視圖的優點,缺點,講一下?

63. count(1)、count(*) 與 count(列名) 的差別?

64. 什麼是遊标?

65. 什麼是存儲過程?有哪些優缺點?

66. 什麼是觸發器?觸發器的使用場景有哪些?

67. MySQL中都有哪些觸發器?

68. 超鍵、候選鍵、主鍵、外鍵分别是什麼?

69. SQL 限制有哪幾種呢?

70. 談談六種關聯查詢,使用場景。

71. varchar(50)中50的涵義

72. mysql中int(20)和char(20)以及varchar(20)的差別

73. drop、delete與truncate的差別

74. UNION與UNION ALL的差別?

75. SQL的生命周期?

76. 一條Sql的執行順序?

77. 列值為NULL時,查詢是否會用到索引?

78. 關心過業務系統裡面的sql耗時嗎?統計過慢查詢嗎?對慢查詢都怎麼優化過?

79. 主鍵使用自增ID還是UUID,為什麼?

80. mysql自增主鍵用完了怎麼辦?

81. 字段為什麼要求定義為not null?

82. 如果要存儲使用者的密碼散列,應該使用什麼字段進行存儲?

83. Mysql驅動程式是什麼?

84. 如何優化長難的查詢語句?有實戰過嗎?

85. 優化特定類型的查詢語句

86. MySQL資料庫cpu飙升的話,要怎麼處理呢?

87. 讀寫分離常見方案?

88. MySQL的複制原理以及流程

89. MySQL中DATETIME和TIMESTAMP的差別

90. Innodb的事務實作原理?

91. 談談MySQL的Explain

92. Innodb的事務與日志的實作方式

93. MySQL中TEXT資料類型的最大長度

94. 500台db,在最快時間之内重新開機。

95. 你是如何監控你們的資料庫的?你們的慢日志都是怎麼查詢的?

96. 你是否做過主從一緻性校驗,如果有,怎麼做的,如果沒有,你打算怎麼做?

97. 你們資料庫是否支援emoji表情存儲,如果不支援,如何操作?

98. MySQL如何擷取目前日期?

99. 一個6億的表a,一個3億的表b,通過外間tid關聯,你如何最快的查詢出滿足條件的第50000到第50200中的這200條資料記錄。

100. Mysql一條SQL加鎖分析

網絡原理

1.如何了解 URI?

2.解釋一下HTTP的超文本傳輸協定

3.HTTP 的特點?HTTP 有哪些缺點?

4.HTTP 封包結構是怎樣的?

5.如何了解 HTTP 的請求方法?

6.http 常見字段有哪些?

7.對于定長和不定長的資料,HTTP 是怎麼傳輸的?

8.HTTP 如何處理大檔案的傳輸?

9.HTTP 中如何處理表單資料的送出?

10.如何了解 HTTP 代理?

11.說說 HTTP1.1 相比 HTTP1.0 提高了什麼性能?

12.那上面的 HTTP1.1 的性能瓶頸,HTTP2 做了什麼優化?

13.HTTP2 有哪些缺陷?HTTP3 做了哪些優化?

14.HTTP 與 HTTPS 有哪些差別?

15.HTTPS 解決了 HTTP 的哪些問題?

16.HTTPS 是如何解決上面的三個風險的?

17.HTTPS 是如何建立連接配接的?其間互動了什麼?

18.UDP 和 TCP 的差別

19.TCP 三次握手和四次揮手

20.說說TCP傳輸的三次握手四次揮手政策

21.什麼是無狀态協定,HTTP 是無狀态協定嗎,怎麼解決

22.OSI與TCP/IP各層的結構與功能,都有哪些協定?

23.TCP協定如何保證可靠傳輸

24.說說ARQ協定

25.什麼是滑動視窗和流量控制

26.什麼是擁塞控制

27.在浏覽器中輸入url位址 ->> 顯示首頁的過程?

28.HTTP長連接配接,短連接配接

29.Cookie的作用是什麼?和Session有什麼差別?

30.URI和URL的差別是什麼?

31.HTTP常見的狀态碼有哪些?

32.說說常見的常見HTTP首部字段?

33.HTTPS方式與web伺服器通信的步驟?

34.HTTP請求封包與響應封包格式?

35.位址欄輸入 URL 發生了什麼?

36.HTTPS的工作原理

網絡程式設計

1、什麼是IO多路複用

2、epool中et和lt的差別與實作原理

3、tcp連接配接建立的時候3次握手,斷開連接配接的4次握手的具體過程

4、connect方法會阻塞,請問有什麼方法可以避免其長時間阻塞?

5、網絡中,如果用戶端突然掉線或者重新開機,伺服器端怎麼樣才能立刻知道?

6、在子網210.27.48.21/30種有多少個可用位址?分别是什麼?

7、TTL是什麼?有什麼用處,通常那些工具會用到它?(ping? traceroute? ifconfig? netstat?)

8、路由表示做什麼用的?在linux環境中怎麼來配置一條預設路由?

9、在網絡中有兩台主機A和B,并通過路由器和其他交換裝置連接配接起來,已經确認實體連接配接正确無誤,怎麼來測試這兩台機器是否連通?如果不通,怎麼來判斷故障點?怎麼排除故障?

10、網絡程式設計中設計并發伺服器,使用多程序 與 多線程 ,請問有什麼差別?

11、網絡程式設計的一般步驟

12、TCP的重發機制是怎麼實作的?

13、TCP為什麼不是兩次連接配接?而是三次握手?

14、socket程式設計,如果client斷電了,伺服器如何快速知道?

15、fork()一子程序程後 父程序癿全局變量能不能使用?

16、4G的long型整數中找到一個最大的,如何做?

17、tcp三次握手的過程,accept發生在三次握手哪個階段?

18、tcp流, udp的資料報,之間有什麼差別,為什麼TCP要叫做資料流?

19、socket在什麼情況下可讀?

20、TCP通訊中,select到讀事件,但是讀到的資料量是0,為什麼,如何解決?

21、說說IO多路複用優缺點?

22、說說select機制的缺點

23、說一下epoll的好處

24、epoll需要在使用者态和核心态拷貝資料麼?

25、epoll的實作知道麼?在核心當中是什麼樣的資料結構進行存儲,每個操作的時間複雜度是多少?

作業系統

1、什麼是作業系統?

2、什麼是系統調用?

3、程序和線程的差別?

4、程序有哪幾種狀态?

5、程序間的通信方式

6、線程間的同步的方式

7、程序的排程算法

8、作業系統的記憶體管理主要是做什麼?

9、常見的幾種記憶體管理機制

10、快表和多級頁表

11、分頁機制和分段機制的共同點和差別

12、邏輯(虛拟)位址和實體位址

13、CPU 尋址了解嗎?為什麼需要虛拟位址空間?

14、什麼是虛拟記憶體(Virtual Memory)?

15、局部性原理

16、虛拟存儲器

17、虛拟記憶體的技術實作

18、頁面置換算法

19、作業系統是怎麼進行程序管理的?

20、作業系統是如何做到程序阻塞的?

21、線程是如何實作的?

22、線程之間私有和共享的資源有哪些?

23、一般應用程式記憶體空間的堆和棧的差別是什麼?

24、程序虛拟空間是怎麼布局的?

25、虛拟記憶體是如何映射到實體記憶體的?了解分頁記憶體管理嗎?

26、什麼是上下文切換,作業系統是怎麼做的上下文切換?

27、什麼是大端位元組,什麼是小端位元組?如何轉換位元組序?

28、産生死鎖的必要條件有哪些?如何避免死鎖?

29、信号和信号量的差別是什麼?

30、鎖的性能開銷,鎖的實作原理?

編譯原理

1、什麼是文法分析?

2、什麼是自頂向下分析法?

3、在自頂向下的分析過程中,存在的問題是什麼?

4、什麼是确定的自頂向下分析法?

5、存在的問題

6、gcc hello.c 這行指令具體的執行過程,内部究竟做了什麼?

7、程式一定會從main函數開始運作嗎?

8、如何确定某個函數有被編譯輸出?

9、動态連結庫和靜态連結庫的差別是什麼?

并發

1.線程和程序差別

2.建立線程的四種方式

3.as-if-serial規則和happens-before規則的差別

4.多線程如何使用?

5.啟動多線程調用使用什麼方法?

6.并發容器之CopyOnWriteArrayList詳解

7.并發容器之ThreadLocal詳解

8.并發容器之ConcurrentHashMap詳解(JDK1.8版本)與源碼分析

9.并發容器之BlockingQueue詳解

10.ThreadLocal記憶體洩漏分析與解決方案

堆與棧

1、什麼時候可能發生棧溢出

2、堆和棧的差別

3、什麼是小根堆和大根堆?

4、棧溢出的原因

5、棧的效率高的原因

6、請你說一說小根堆特點

7、請你解釋一下,記憶體中的棧(stack)、堆(heap) 和靜态區(static area) 的用法。并且說明heap和stack有什麼差別

8、大頂堆怎麼插入删除

9、請你講一下動态連結清單和靜态連結清單的差別

 redis

1、什麼是 Redis?簡述它的優缺點?

2、Redis相比memcached有哪些優勢?

3、Redis支援哪幾種資料類型?

4、Redis主要消耗什麼實體資源?

5、Redis 的全稱是什麼?

6、Redis有哪幾種資料淘汰政策?

7、Redis官方為什麼不提供Windows版本?

8、一個字元串類型的值能存儲最大容量是多少?

9、為什麼Redis需要把所有資料放到記憶體中?

10、Redis 叢集方案應該怎麼做?都有哪些方案?

11、Redis 叢集方案什麼情況下會導緻整個叢集不可用?

12、MySQL 裡有 2000w 資料,redis 中隻存 20w 的資料,如何保證 redis中的資料都是熱點資料?

13、Redis有哪些适合的場景?

14、Redis.支援的Java用戶端都有哪些?官方推薦用哪個?

15、Redis 和Redisson有什麼關系?

16、Jedis與 Redisson對比有什麼優缺點?

17、Redis如何設定密碼及驗證密碼?

18、說說 Redis 哈希槽的概念?

19、Redis 叢集的主從複制模型是怎樣的?

20、Redis叢集會有寫操作丢失嗎?為什麼?

21、Redis 叢集之間是如何複制的?

22、Redis 叢集最大節點個數是多少?

23、Redis 叢集如何選擇資料庫?

24、怎麼測試Redis的連通性?

25、Redis 中的管道有什麼用?

26、怎麼了解 Redis 事務?

27、Redis事務相關的指令有哪幾個?

28、Redis key的過期時間和永久有效分别怎麼設定?

29、Redis 如何做記憶體優化?

30、Redis回收程序如何工作的?

31、Redis回收使用的是什麼算法?

32、Redis 如何做大量資料插入?

33、為什麼要做Redis分區?

34、有哪些Redis分區實作方案?

35、Redis分區有什麼缺點?

36、Redis 持久化資料和緩存怎麼做擴容?如果 Redis 被當做緩存使用,使用一緻性哈希實作動态擴容縮容

37、分布式Redis.是前期做還是後期規模上來了再做好?為什麼?

38、Twemproxy是什麼?

39、支援一緻性哈希的用戶端有哪些?

40、Redis與其他 key-value存儲有什麼不同?

41、Redis的記憶體占用情況怎麼樣?

42、都有哪些辦法可以降低Redis的記憶體使用情況呢?

43、檢視Redis使用情況及狀态資訊用什麼指令?

44、Redis 的記憶體用完了會發生什麼?

45、Redis是單線程的,如何提高多核CPU的使用率?

46、一個 Redis 執行個體最多能存放多少的keys?List、Set、Sorted Set 他們最多能存放多少元素?

47、Redis 常見性能問題和解決方案?

48、Redis提供了哪幾種持久化方式?

49、如何選擇合适的持久化方式?

50、修改配置不重新開機 Redis 會實時生效嗎?

nginx

1、請解釋一下什麼是Nginx?

2、請列舉Nginx的一些特性。

3、請列舉Nginx和Apache之間的不同點。

4、請解釋Nginx如何處理HTTP請求。

5、在Nginx中,如何使用未定義的伺服器名稱來阻止處理請求?

6、使用“反向代理伺服器”的優點是什麼?

7、請列舉Nginx伺服器的最佳用途。

8、請解釋Nginx伺服器上的Master和Worker程序分别是什麼?

9、請解釋你如何通過不同于80的端口開啟Nginx?

10、請解釋是否有可能将Nginx的錯誤替換為502錯誤、503?

11、在Nginx中,解釋如何在URL中保留雙斜線?

12、請解釋ngx_http_upstream_module的作用是什麼?

13、請解釋什麼是C10K問題?

14、請陳述stub_status和sub_filter指令的作用是什麼?

15、解釋Nginx是否支援将請求壓縮到上遊?

16、解釋如何在Nginx中獲得目前的時間?

17、用Nginx伺服器解釋-s的目的是什麼?

18、解釋如何在Nginx伺服器上添加子產品?

19、什麼是Nginx?

20、為什麼使用nginx

21、為什麼nginx性能這麼高

22、nginx的負載均衡算法都要哪些?

23、nginx的upstream中的ip_hash和url_hash的差別和特點。

24、什麼是正向代理和反向代理

25、動态資源,靜态資源分離?

26、為什麼要做動靜分離?

27、生産中如何設定worker程序的數量呢?

28、Last-Modified,Expires,Max-age,Etag他們的含義,作用于浏覽器端的是那些?作用于服務端的是那些?

29、為什麼nginx不使用多線程?

30、nginx常見的優化配置有哪些?

31、nginx常用子產品

32、location比對的優先級别