慕課go高級工程師實戰營

愛分享 愛生活 加油 2021

1、go的調度mysql

2、go struct能不能比較linux

由於是強類型語言,因此不一樣類型的結構不能做比較,可是同一類型的實例值是能夠比較的,實例不能夠比較,由於是指針類型nginx

3、go defer(for defer),先進後出,後進先出git

4、select能夠用於什麼,經常使用語gorotine的完美退出golang

golang 的 select 就是監聽 IO 操做,當 IO 操做發生時,觸發相應的動做每一個case語句裏必須是一個IO操做,確切的說,應該是一個面向channel的IO操做面試

5、context包的用途Context一般被譯做上下文,它是一個比較抽象的概念,其本質,是【上下上下】存在上下層的傳遞,上會把內容傳遞給下。在Go語言中,程序單元也就指的是Goroutineredis

6、client如何實現長鏈接算法

server是設置超時時間,for循環遍歷的sql

7、主協程如何等其他協程完再操做docker

使用channel進行通訊,context,select

8、slice,len,cap,共享,擴容

append函數,由於slice底層數據結構是,由數組、len、cap組成,因此,在使用append擴容時,會查看數組後面有沒有連續內存快,有就在後面添加,沒有就從新生成一個大的素組

9、map如何順序讀取

map不能順序讀取,是由於他是無序的,想要有序讀取,首先的解決的問題就是,把key變爲有序,因此能夠把key放入切片,對切片進行排序,遍歷切片,經過key取值。

十、實現set

[圖片上傳失敗...(image-fa2b2d-1551792454360)]

實現set

十一、實現消息隊列(多生產者,多消費者)

1使用切片加鎖能夠實現

十二、大文件排序

1歸併排序,分而治之,拆分爲小文件,在排序

1三、基本排序,哪些是穩定的

1四、http get跟head

1HEAD和GET本質是同樣的,區別在於HEAD不含有呈現數據,而僅僅是HTTP頭信息。有的人可能以爲這個方法沒什麼用,其實不是這樣的。想象一個業務情景:欲判斷某個資源是否存在,咱們一般使用GET,但這裏用HEAD則意義更加明確。

1五、http 401,403

400 bad request,請求報文存在語法錯誤

401 unauthorized,表示發送的請求須要有經過 HTTP 認證的認證信息

403 forbidden,表示對請求資源的訪問被服務器拒絕

404 not found,表示在服務器上沒有找到請求的資源

1六、http keep-alive

client發出的HTTP請求頭須要增長Connection:keep-alive字段

Web-Server端要能識別Connection:keep-alive字段,而且在http的response裏指定Connection:keep-alive字段,告訴client,我能提供keep-alive服務,而且"應允"client我暫時不會關閉socket鏈接

1七、http能不能一次鏈接屢次請求,不等後端返回

http本質上市使用socket鏈接,所以發送請求,接寫入tcp緩衝,是能夠屢次進行的,這也是http是無狀態的緣由

1八、tcp與udp區別,udp優勢,適用場景

tcp傳輸的是數據流,而udp是數據包,tcp會進過三次握手,udp不須要

1九、time-wait的做用

20、數據庫如何建索引

2一、孤兒進程,殭屍進程

2二、死鎖條件,如何避免

2三、linux命令,查看端口占用,cpu負載,內存佔用,如何發送信號給一個進程

2四、git文件版本,使用順序,merge跟rebase

2五、Slice與數組區別,Slice底層結構

2六、項目裏的微信支付這塊,在支付完微信通知這裏,收到兩次微信相同的支付通知,怎麼防止重複消費(相似接口的冪等性),說了藉助Redis或者數據庫的事務

2七、項目裏的消息推送怎麼作的(業務有關)

2八、Go的反射包怎麼找到對應的方法(這裏忘記怎麼問的,直接說不會,只用了DeepEqual,簡單講了DeepEqual)

2九、Redis基本數據結構

30、Redis的List用過嗎?底層怎麼實現的?知道可是沒用過,不知道怎麼實現

3一、Mysql的索引有幾種,時間複雜度

3二、InnoDb是表鎖仍是行鎖,爲何(這裏答不出來爲何,只說了行鎖)

3三、Go的channel(有緩衝和無緩衝)

3四、退出程序時怎麼防止channel沒有消費完,這裏一開始有點沒清楚面試官問的,而後說了監聽中斷信號,作退出前的處理,而後面試官說不是這個意思,而後說發送前先告知長度,長度要是不知道呢?close channel下游會受到0值,能夠利用這點(這裏也有點跟面試官說不明白)

3五、用過什麼消息中間件之類嗎?沒有

3六、有什麼問題嗎?評價?後面還有面試,後面再問吧

38、生產者消費者模式,手寫代碼(Go直接使用channel實現很簡單,還想着面試官會不會不讓用channel實現,不用channel的可使用數組加條件變量),channel緩衝長度怎麼決定,怎麼控制上游生產速度過快,這裏沒說出解決方案,只是簡單說了channel長度能夠與上下游的速度比例成線性關係,面試官說這是一種解決方案

39、手寫循環隊列

40、寫的循環隊列是否是線程安全,不是,怎麼保證線程安全,加鎖,效率有點低啊,而後面試官就提醒Go推崇原子操做和channel

41、寫完代碼面試官說後面問的問題回答就能夠,不知道的話不要緊

42、Linux會不會,只會幾個命令,面試官就說一共也就一百多個命令

43、TimeWait和CloseWait緣由

44、線段樹瞭解嗎?不瞭解,字典樹?瞭解

45、看過啥源碼,nsq(Go的消息中間件),簡單問了我裏面的waitgroup包證實我看過

46、sync.Pool用過嗎,爲何使用,對象池,避免頻繁分配對象(GC有關),那裏面的對象是固定的嗎?不清楚,沒看過這個的源碼

47、有什麼問題嗎?評價?基礎不錯,Linux尚缺,Go的理解不夠深刻,高級數據結構不瞭解,優勢是看源碼

48、後面面試官講了他們作的東西,主要是廣告部分,說日均數據量至少百萬以上,多達上億,高併發使用Go支撐,有微服務,服務治理,說我須要學的東西挺多的

49、證實二叉樹的葉子節點跟度數爲2的節點的關係

50、惟一索引和主鍵索引

51、智能指針

52、字符串解析爲數字(考慮浮點型)

53、單點登陸,tcp粘包

54、手寫洗牌

55、處理粘包斷包實現,面試官覺得是negle算法有關,解釋了下negle跟糊塗窗口綜合徵有關,而後面試官以爲其餘項目是crud就沒問了

56、goroutine調度用了什麼系統調用,這個不會,面試官想從go問到操做系統,而後覺得***做系統基礎很差,就問了操做系統問題

57、進程虛擬空間分佈,全局變量放哪裏?答上來了,操做系統就不問了

58、有沒有網絡編程,有,怎麼看鏈接狀態?netstat,有哪些?ESTABLISHED,LISTEN等等,有異常狀況嗎?TIME_WAIT不少,爲何?大量短連接

59、幾種基本排序算法說一下,問了堆的時間複雜度,穩定性,爲何不穩定

60、 topk問題,海量數據topk(回答成切分屢次加載內存,而後用維持k長度的有序鏈表,而後被說時間複雜度很差,提示說仍是用堆,而後哦哦哦對)最長連續字串和,這裏我說的解決方案沒用dp(對dp不熟),面試官一直引導我dp,仍是不會

61、什麼是主鍵

62、聯合索引和惟一索引

62、越多的索引越好嗎?

63、創建索引要注意什麼?

64、進程和線程區別?

65、死鎖?

66、tcp三次握手

67、http,https

68、狀態碼401,301,302,201

69、項目我說只有一臺機子,因此用的單機部署,面試官說單機也能夠部署多個,有什麼方法嗎?我說docker,問docker有哪些網絡,不熟,dockerfile關鍵字,只答幾個。順便扯了下nginx轉發。

70、數據庫隔離級別,提交讀會形成什麼

71、go調度

72、 goroutine泄漏有沒有處理,設置timeout,select加定時器

73、mysql高可用的方案

74、進程線程區別

75、排序算法以及時間複雜度

76、怎麼學習go

77、go的線程,給他講了跟goroutine調度

78、io模型,同步阻塞,同步非阻塞,異步

79、cookie和session

80、接口kps測試

81、redis排行榜數據結構(跳躍表),查詢時間複雜度

82、redis分佈式,如何減小同步延遲

83、mysql能實現redis的功能嗎

84、平時怎麼學習?

85、看什麼書?

86、興趣愛好

87、看過google四篇分佈式論文嗎,沒看過

89、cap理論,舉例

90、LRU算法,LFU

91、講講怎麼理解網絡編程

92、go使用踩過什麼坑(for range,數據庫鏈接defer close)

93、go優缺點

95、go的值傳遞和引用

96、慢查詢

97、爲何使用pg

98、redis的數據類型

99、全部左葉子節點的和

100、m個n大小的有序數組求並集,一開始是2路歸併,求時間複雜度,後來在面試官提醒直接m路歸併,求時間複雜度

101、static關鍵字,還有其餘關鍵字嗎

102、hash表設計,線程安全?

103、 線程本身獨享什麼

104、網絡編程過程

105、select、epoll106、看什麼書

107、排行榜怎麼實現

108、go的鎖如何實現,用了什麼cpu指令

109、go的runtime如何實現

110、看過sql的鏈接池實現嗎

111、ctx包瞭解嗎?有什麼用?

112、go什麼狀況下會發生內存泄漏?(他說ctx沒有cancel的時候,這個真不知道)

113、怎麼實現協程完美退出?

114、智力題:1000瓶酒中有1瓶毒酒,10只老鼠,7天后毒性才發做,第8天要賣了,怎麼求那瓶毒酒?

115、簡單dp題,n*n矩陣從左上角到右下角有多少種走法(只限往下和往右走)

116、用channel實現定時器?(其實是兩個協程同步)

117、go爲何高併發好?講了go的調度模型

118、操做系統內存管理?進程通信,爲何共享存儲區效率最高

119、實現一個hashmap,解決hash衝突的方法,解決hash傾斜的方法

120、怎麼理解go的interface

121、100億個數選top5,小根堆

122、數組和爲n的數組對

123、最大連續子數組和

124、redis容災,備份,擴容

125、跳躍表,爲何使用跳躍表而不使用紅黑樹

126、輸入url後涉及什麼

127、tcp怎麼找到哪一個套接字

128、ipc方式,共享存儲區原理

130、進程虛擬空間佈局

131、進程狀態轉換

132、線程的棧在哪裏分配

133、多個線程讀,一個線程寫一個int32會不會有問題,int64呢(這裏面試官後來講了要看數據總線的位數,32位的話寫int32沒問題,int64就有問題)

134、判斷二叉樹是否爲滿二叉樹

135、lru實現

136、一個大整數(字符串形式表示的),移動字符求比它大的數中最小的

137、點贊系統設計

相關文章
相關標籤/搜索