1、go的調度2、go struct能不能比較mysql
由於是強類型語言,因此不一樣類型的結構不能做比較,可是同一類型的實例值是能夠比較的,實例不能夠比較,由於是指針類型linux
3、go defer(for defer),先進後出,後進先出nginx
4、select能夠用於什麼,經常使用語gorotine的完美退出git
golang 的 select 就是監聽 IO 操做,當 IO 操做發生時,觸發相應的動做每一個case語句裏必須是一個IO操做,確切的說,應該是一個面向channel的IO操做golang
5、context包的用途Context一般被譯做上下文,它是一個比較抽象的概念,其本質,是【上下上下】存在上下層的傳遞,上會把內容傳遞給下。在Go語言中,程序單元也就指的是Goroutine面試
6、client如何實現長鏈接redis
server是設置超時時間,for循環遍歷的算法
7、主協程如何等其他協程完再操做sql
使用channel進行通訊,context,selectdocker
8、slice,len,cap,共享,擴容
append函數,由於slice底層數據結構是,由數組、len、cap組成,因此,在使用append擴容時,會查看數組後面有沒有連續內存快,有就在後面添加,沒有就從新生成一個大的素組
9、map如何順序讀取
map不能順序讀取,是由於他是無序的,想要有序讀取,首先的解決的問題就是,把key變爲有序,因此能夠把key放入切片,對切片進行排序,遍歷切片,經過key取值。
十、實現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推崇原子操做和channel41、寫完代碼面試官說後面問的問題回答就能夠,不知道的話不要緊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,https68、狀態碼401,301,302,20169、項目我說只有一臺機子,因此用的單機部署,面試官說單機也能夠部署多個,有什麼方法嗎?我說docker,問docker有哪些網絡,不熟,dockerfile關鍵字,只答幾個。順便扯了下nginx轉發。
70、數據庫隔離級別,提交讀會形成什麼71、go調度72、 goroutine泄漏有沒有處理,設置timeout,select加定時器
73、mysql高可用的方案74、進程線程區別
75、排序算法以及時間複雜度76、怎麼學習go77、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算法,LFU91、講講怎麼理解網絡編程
92、go使用踩過什麼坑(for range,數據庫鏈接defer close)93、go優缺點95、go的值傳遞和引用96、慢查詢97、爲何使用pg98、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的interface121、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、點贊系統設計