会员   密码 您忘记密码了吗?
1,653,058 本书已上架      购物流程 | 常见问题 | 联系我们 | 关于我们 | 用户协议

有店 App


当前分类

商品分类

浏览历史

当前位置: 首页 > 简体书 > Go程序員面試筆試寶典
Go程序員面試筆試寶典
上一张
下一张
prev next

Go程序員面試筆試寶典

作者: 猿媛之家
出版社: 機械工業出版社
出版日期: 2022-04-01
商品库存: 点击查询库存
以上库存为海外库存属流动性。
可选择“空运”或“海运”配送,空运费每件商品是RM14。
配送时间:空运约8~12个工作天,海运约30个工作天。
(以上预计配送时间不包括出版社库存不足需调货及尚未出版的新品)
定价:   NT594.00
市场价格: RM106.79
本店售价: RM95.04
购买数量:
collect Add to cart Add booking
详细介绍 商品属性 商品标记
內容簡介

Go語言是一門既年輕、簡捷,又強大、高效、充滿潛力的伺服器語言。《Go程式師面試筆試寶典》使用淺顯易懂的語言與大量流程圖,深入介紹了Go語言。
 
全書分為三大部分:部分(1~5章)為Go語言基礎。介紹了Go語言中最基礎、最常見的逃逸分析、defer延遲語句、切片、陣列、散清單、通道和介面。第2部分(6~11章)為Go語言類庫。介紹了Go語言自身的類庫,如unsafe、context、錯誤、計時器、反射和sync包。第3部分(12~14章)為Go語言特性。介紹了調度、記憶體分配、GC,從原理到源碼分析,逐漸深入。這三大部分是runtime中*重要、最核心的內容,理解了這三者的原理,才算是對Go語言有了一個比較深入的理解和掌握。
 
《Go程式師面試筆試寶典》是一本電腦相關專業畢業生面試筆試求職參考書,同時也適合有一定工作經驗的開發工程師進一步提升自身水準。


作者介紹


目錄

前言
第1部分語言基礎
第1章逃逸分析/2
1.1逃逸分析是什麼/2
1.2逃逸分析有什麼作用/3
1.3逃逸分析是怎麼完成的/3
1.4如何確定是否發生逃逸/4
1.5Go與C/C++中的堆和棧是同一個概念嗎/5

第2章延遲語句/6
2.1延遲語句是什麼/6
2.2延遲語句的執行順序是什麼/7
2.3如何拆解延遲語句/9
2.4如何確定延遲語句的參數/10
2.5閉包是什麼/11
2.6延遲語句如何配合恢復語句/11
2.7defer鏈如何被遍歷執行/13
2.8為什麼無法從父goroutine恢復子goroutine的panic/18

第3章數據容器/20
3.1陣列與切片/20
3.1.1陣列和切片有何異同/20
3.1.2切片如何被截取/20
3.1.3切片的容量是怎樣增長的/23
3.1.4切片作為函數參數會被改變嗎/27
3.1.5內建函數make和new的區別是什麼/28
3.2散列表map/29
3.2.1map是什麼/29
3.2.2map的底層實現原理是什麼/30
3.2.3map中的key為什麼是無序的/50
3.2.4map是執行緒安全的嗎/50
3.2.5float類型可以作為map的key嗎/50
3.2.6map如何實現兩種get操作/52
3.2.7如何比較兩個map是否相等/53
3.2.8可以對map的元素取位址嗎/54
3.2.9可以邊遍歷邊刪除嗎/54

第4章通道/55
4.1CSP是什麼/55
4.2通道有哪些應用/56
4.3通道的底結構/57
4.3.1資料結構/57
4.3.2創建過程/58
4.3.3接收過程/60
4.3.4發送過程/67
4.3.5收發資料的本質/72
4.4通道的關閉過程發生了什麼/74
4.5從一個關閉的通道裡仍然能讀出資料嗎/75
4.6如何優雅地關閉通道/76
4.7關於通道的happens-before有哪些/79
4.8通道在什麼情況下會引起資源洩漏/81
4.9通道操作的情況總結/81

第5章介面/82
5.1Go介面與C++介面有何異同/82
5.2Go語言與“鴨子類型”的關係/82
5.3iface和eface的區別是什麼/84
5.4值接收者和指針接收者的區別/86
5.4.1方法/86
5.4.2值接收者和指針接收者/87
5.4.3兩者分別在何時使用/89
5.5如何用interface實現多態/89
5.6介面的動態類型和動態值是什麼/91
5.7介面轉換的原理是什麼/93
5.8類型轉換和斷言的區別是什麼/96
5.9如何讓編譯器自動檢測類型是否實現了介面/101

第2部分語言類庫
第6章unsafe/104
6.1如何利用unsafe包修改私有成員/104
6.2如何利用unsafe獲取slice和map的長度/105
6.3如何實現字串和byte切片的零複製轉換/106

第7章context/108
7.1context是什麼/108
7.2context有什麼作用/108
7.3如何使用context/109
7.3.1傳遞共用的資料/109
7.3.2定時取消/111
7.3.3防止goroutine洩漏/111
7.4context底層原理是什麼/112
7.4.1介面/113
7.4.2結構體/114

第8章錯誤/124
8.1介面error是什麼/124
8.2介面error有什麼問題/125
8.3如何理解關於error的三句諺語/126
8.3.1視錯誤為值/126
8.3.2檢查並優雅地處理錯誤/128
8.3.3只處理錯誤一次/130
8.4錯誤處理的改進/131

第9章計時器/133
9.1Timer底層資料結構為什麼用四叉堆而非二叉堆/133
9.2Timer曾做過哪些重大的改進/134
9.3計時器的使用場景有哪些/134
9.4Timer/Ticker的計時功能有多準確/134
9.5計時器的實現還有其他哪些方式/137

第10章反射/140
10.1反射是什麼/140
10.2什麼情況下需要使用反射/140
10.3Go語言如何實現反射/140
10.3.1types和interface/141
10.3.2反射的基本函數/144
10.3.3反射的三大定律/149
10.4如何比較兩個物件是否相同/149
10.5如何利用反射實現深度拷貝/151

第11章同步模式/154
11.1等待組sync.WaitGroup的原理是什麼/154
11.2緩存池sync.Pool/157
11.2.1如何使用sync.Pool/157
11.2.2sync.Pool是如何實現的/162
11.3併發安全散列表sync.Map/174
11.3.1如何使用sync.Map/175
11.3.2sync.Map底層如何實現/176

第3部分高級特性
第12章調度機制/184
12.1goroutine和執行緒有什麼區別/184
12.2Gosheduler是什麼/184
12.3goroutine的調度時機有哪些/186
12.4M:N模型是什麼/187
12.5工作竊取是什麼/187
12.6GPM底層資料結構是怎樣的/188
12.7scheduler的初始化過程是怎樣的/193
12.8主goroutine如何被創建/207
12.9g0棧和用戶棧如何被切換/212
12.10Goschedule迴圈如何啟動/217
12.11goroutine如何退出/221
12.12schedule迴圈如何運轉/226
12.13M如何找工作/227
12.14系統監控sysmon後臺監控執行緒做了什麼/237
12.14.1搶佔進行系統調用的P/240
12.14.2搶佔長時間運行的P/243
12.15非同步搶佔的原理是什麼/247

第13章記憶體分配機制/252
13.1管理記憶體的動機是什麼,通常涉及哪些組件/252
13.1.1記憶體管理的動機/252
13.1.2記憶體管理運行時的元件/252
13.1.3記憶體的使用狀態/253
13.2Go語言中的堆和棧概念與傳統意義上的堆和棧有什麼區別/255
13.3物件分配器是如何實現的/255
13.3.1分配的基本策略/256
13.3.2物件分配器的基本元件和層級/256
13.3.3物件分配的產生條件和入口/259
13.3.4大對象分配/261
13.3.5小對象分配/262
13.3.6微對象分配/264
13.4頁分配器是如何實現的/265
13.4.1頁的分配/265
13.4.2跨度的分配/266
13.4.3非託管對象與定長分配器/267
13.5與記憶體管理相關的運行時元件還有哪些/269
13.5.1執行棧管理/269
13.5.2垃圾回收器和拾荒器/271
13.6衡量記憶體消耗的指標有哪些/272
13.7運行時記憶體管理的演變歷程/278
13.7.1演變過程/278
13.7.2存在的問題/279

第14章垃圾回收機制/280
14.1垃圾回收的認識/280
14.1.1垃圾回收是什麼,有什麼作用/280
14.1.2根物件到底是什麼/280
14.1.3常見的垃圾回收的實現方式有哪些,Go語言使用的是什麼/281
14.1.4三色標記法是什麼/281
14.1.5STW是什麼意思/282
14.1.6如何觀察Go語言的垃圾回收現象/283
14.1.7有了垃圾回收,為什麼還會發生記憶體洩漏/286
14.1.8併發標記清除法的難點是什麼/288
14.1.9什麼是寫屏障、混合寫屏障,如何實現/289
14.2垃圾回收機制的實現細節/291
14.2.1Go語言中進行垃圾回收的流程是什麼/291
14.2.2觸發垃圾回收的時機是什麼/292
14.2.3如果記憶體分配速度超過了標記清除的速度怎麼辦/294
14.3垃圾回收的優化問題/295
14.3.1垃圾回收關注的指標有哪些/295
14.3.2Go的垃圾回收過程如何調優/295
14.3.3Go的垃圾回收有哪些相關的API,其作用分別是什麼/305
14.4歷史及演進/305
14.4.1Go歷史各個版本在垃圾回收方面的改進/305
14.4.2Go在演化過程中還存在哪些其他設計,為什麼沒有被採用/307
14.4.3Go語言中垃圾回收還存在哪些問題/307
結束語/310