Kotlin 程序員面試筆試寶典

猿媛之家;孫偉;楚秦

  • 出版商: 機械工業
  • 出版日期: 2019-10-09
  • 定價: $474
  • 售價: 8.5$403
  • 語言: 簡體中文
  • 裝訂: 平裝
  • ISBN: 7111635396
  • ISBN-13: 9787111635390
  • 相關分類: JVM 語言面試技巧
  • 立即出貨

買這商品的人也買了...

相關主題

商品描述

本書是一本講解Kotlin程序員面試筆試的百科全書,將Kotlin程序員面試筆試過程中各類知識點一網打盡。在講解的廣度上,通過各種渠道,搜集了近3年來幾乎所有IT企業針對Kotlin崗位的筆試面試所涉及的知識點,包括但不限於Kotlin、計算機網絡、操作系統等。在講解的深度上,本書由淺入深,庖丁解牛式地分析每一個知識點,並提煉歸納,同時,引入與該知識點相關的內容,並對知識點進行全面的深度剖析,讓讀者不僅能夠理解這個知識點,還能在遇到相似問題的時候,也能遊刃有餘地解決,而這些內容是其他同類書籍所沒有的。本書將知識點歸納分類,結構合理,條理清晰,便於讀者進行學習與檢索。
本書是一本計算機相關專業畢業生面試筆試的求職用書,同時也適合期望在計算機軟、硬件行業大顯身手的計算機愛好者閱讀。

目錄大綱

前言

面試筆試經驗技巧篇
經驗技巧1 如何巧妙地回答面試官的問題2
經驗技巧2 如何回答技術性的問題3
經驗技巧3 如何回答非技術性問題4
經驗技巧4 如何回答快速估算類問題5
經驗技巧5 如何回答演算法設計問題6
經驗技巧6 如何回答系統設計題8
經驗技巧7 如何解決求職中的時間衝突問題11
經驗技巧8 如果面試問題曾經遇見過,是否要告知面試官11
經驗技巧9 被企業拒絕後是否可以再申請12
經驗技巧10 如何應對自己不會回答的問題12
經驗技巧11 如何應對面試官的“激將法”語言13
經驗技巧12 如何處理與面試官持不同觀點這個問題14
經驗技巧13 什麼是職場暗語14

面試筆試技術攻克篇

第1章 Kotlin是什麼 19
1.1 關於Kotlin19
1.2 Kotlin的特性20
1.2.1 空安全20
1.2.2 簡潔20
1.2.3 相容性22
1.3 Kotlin的前景22
1.4 學習Kotlin22

第2章 Kotlin工具介紹23
2.1 使用Web IDE快速體驗Kotlin23
2.2 使用IntelliJ IDEA進行Kotlin開發23
2.1.1 運行Hello World23
2.1.2 配置 Kotlin25
2.1.3 將 Java 代碼轉換為 Kotlin 代碼25
2.1.4 Kotlin 命令列編譯工具27

第3章 Kotlin語法基礎29
3.1 Kotlin 開發基本知識29
3.1.1 專案結構29
3.1.2 代碼編寫習慣30
3.1.3 相等性31
3.1.4 字串範本31
3.2 名詞定義31
3.2.1 屬性32
3.2.2 運算式32
3.2.3 高階函數32
3.2.4 字面值和函數字面值33
3.3 變數33
3.3.1 變數聲明33
3.3.2 類型推斷34
3.4 函數35
3.4.1 聲明函數35
3.4.2 函數參數37
3.4.3 可變數量的參數39
3.4.4 具名引數39
3.4.5 中綴函數40
3.5 基本類型41
3.5.1 數位類型41
3.5.2 比較42
3.5.3 運算44
3.6 空安全44
3.6.1 可空變數44
3.6.2 let和apply46
3.6.3 Elvis47
3.6.4 空安全機制48
3.7 控制語句49
3.7.1 if49
3.7.2 when50
3.7.3 for51
3.7.4 while 和 do…while52
3.7.5 break 和 continue52
3.8 陣列和區間52
3.8.1 陣列52
3.8.2 區間53

第4章 Kotlin基礎功能55
4.1 類的聲明和構造55
4.1.1 聲明類55
4.1.2 構造函數55
4.1.3 二級構造函數56
4.1.4 類的實例57
4.1.5 類的構造57
4.2 屬性和欄位58
4.2.1 屬性58
4.2.2 屬性聲明59
4.2.3 訪問器59
4.2.4 屬性的探究60
4.3 繼承和介面62
4.3.1 繼承62
4.3.2 重寫方法64
4.3.3 重寫屬性64
4.3.4 抽象類別65
4.3.5 介面66
4.4 可見性修飾68
4.4.1 頂層聲明的可見性68
4.4.2 類成員的可見性70
4.4.3 構造函數的可見性71
4.5 單例和伴生對象71
4.5.1 單例71
4.5.2 伴生對象73
4.6 嵌套類和內部類75
4.6.1 嵌套類75
4.6.2 內部類76
4.7 對象運算式77
4.8 枚舉類80
4.9 泛型81
4.9.1 泛型的使用方法82
4.9.2 協變和逆變83
4.9.3 泛型的out和in85
4.9.4 類型投影87
4.9.5 泛型約束90
4.10 數據類91
4.11 密封類94
4.12 擴展94
4.12.1 擴展函數94
4.12.2 擴展函數是靜態解析的95
4.12.3 擴展屬性96
4.12.4 物件和伴生物件的擴展97
4.12.5 類中的擴展方法97
4.12.6 擴展函數在Java中的調用99
4.13 委託101
4.14 委託屬性103
4.14.1 延遲載入屬性103
4.14.2 可觀察屬性104
4.14.3 將多個屬性保存在一個 Map 內105
4.14.4 自訂委託106
4.14.5 局部委託屬性107

第5章 Kotlin第1功能108
5.1 函數進階108
5.1.1 局部函數和閉包108
5.1.2 尾遞迴函數108
5.1.3 內聯函數110
5.2 Lambda運算式和高階函數112
5.2.1 Lambda運算式112
5.2.2 高階函數114
5.2.3 帶接收者的函數字面值116
5.2.4 標準庫中*常用的Lambda運算式117
5.3 異常處理119
5.3.1 非受檢的異常119
5.3.2 異常處理120
5.3.3 try 運算式121
5.3.4 Nothing 類型122
5.4 集合123
5.4.1 List124
5.4.2 Set125
5.4.3 Map125
5.4.4 集合的遍歷126
5.4.5 集合的轉換127
5.4.6 集合的變換128
5.4.7 序列129
5.5 解構聲明132
5.6 運算子重載135
5.6.1 一元操作符136
5.6.2 二元操作符137
5.7 類型檢查和轉換140
5.7.1 類型檢查與智慧轉換140
5.7.2 類型的轉換142
5.7.3 泛型的檢測142
5.8 注解143
5.8.1 注解聲明143
5.8.2 注解的使用143
5.8.3 注解和 Java 的相容147
5.9 使用DSL148

第6章 Java和Kotlin的互相調用151
6.1 Kotlin和Java代碼的對應關係151
6.1.1 包級函數的對應151
6.1.2 Kotlin 的 object 在 Java中的對應關係152
6.1.3 Kotlin 的屬性和 Java 的對應關係153
6.2 Java中使用Kotlin的擴展155
6.3 靜態函數和靜態欄位157
6.3.1 靜態方法和靜態欄位157
6.3.2 Java 中使用 Kotlin 的 object159
6.4 Kotlin中的Lambda運算式和函數參數160
6.5 解決命名衝突163
6.5.1 Kotlin 中使用識別字轉義解決命名衝突163
6.5.2 使用 @JvmName 第1名字164
6.6 重載函數165
6.7 空安全167
6.7.1 Kotlin 相容 Java 空檢查機制167
6.7.2 平臺類型168
6.7.3 可空性注解169
6.8 Kotlin和Java泛型的互相調用170
6.9 類型映射172
6.9.1 原生類型172
6.9.2 集合173
6.10 陣列175
6.11 其他176
6.11.1 Java可變參數176
6.11.2 Kotlin重載的運算子在Java中的使用177
6.11.3 物件方法178
6.11.4 clone()179
6.11.5 訪問靜態成員179
6.11.6 Java 反射179
6.11.7 SAM 轉換179
6.11.8 在 Kotlin 中使用 JNI180

第7章 協程181
7.1 協程簡介181
7.2 協程入門181
7.2.1 創建協程181
7.2.2 橋接阻塞和非阻塞的世界182
7.2.3 等待協程執行結束183
7.2.4 結構化的併發183
7.2.5 構建作用域183
7.2.6 suspend 函數184
7.3 協程的取消和超時185
7.3.1 取消一個協程185
7.3.2 協作式的取消方式185
7.3.3 讓協程代碼塊支持取消操作186
7.3.4 使用 finally 代碼塊清理資源187
7.3.5 不可取消的代碼塊188
7.3.6 超時189
7.4 管道(channel)190
7.4.1 channel 簡介190
7.4.2 channel 的反覆運算和關閉操作191
7.4.3 構建“生產者”192
7.4.4 管道193
7.4.5 扇出和扇入193
7.4.6 帶有緩衝區的 channel197
7.4.7 channel使用公平原則197
7.5 掛起函數198
7.5.1 掛起函數的循序執行198
7.5.2 非同步併發執行199
7.5.3 使用懶載入的方式200
7.5.4 封裝非同步函數200
7.5.5 結構化非同步併發代碼201
7.6 協程上下文和調度器201
7.6.1 協程的調度和執行執行緒201
7.6.2 非受限調度器和受限調度器202
7.6.3 調試協程和執行緒203
7.6.4 在協程中切換執行緒204
7.6.5 子協程205
7.7 協程的異常處理206
7.7.1 捕獲協程的異常206
7.7.2 協程的取消和異常208
7.7.3 處理異常聚合209
7.8 協程的同步210
7.8.1 協程同步的問題210
7.8.2 協程同步的方法211
7.8.3 互斥鎖213
7.8.4 Actors213

第8章 使用Kotlin進行Android開發215
8.1 Android開發環境215
8.1.1 添加 Gradle 外掛程式215
8.1.2 使用 Kotlin Android Extensions216
8.1.3 處理注解218
8.2 在 Android Library 中使用 Kotlin218
8.3 使用DataBinding220
8.4 協力廠商庫配置221
8.4.1 ButterKnife221
8.4.2 Dagger221
8.5 Anko222
8.5.1 開始使用 Anko223
8.5.2 Anko Commons224
8.5.3 Anko SQLite230
8.5.4 Anko Layouts237

第9章 資料庫245
9.1 SQL語言245
9.2 內連接與外連接247
9.3 事務248
9.4 存儲過程249
9.5 範式250
9.6 觸發器252
9.7 游標253
9.8 資料庫日誌253
9.9 UNION和UNION ALL254
9.10 視圖255
9.11 三級封鎖協議255
9.12 索引256

第10章 作業系統258
10.1 進程管理258
10.1.1 進程與執行緒258
10.1.2 執行緒同步有哪些機制259
10.1.3 內核執行緒和用戶執行緒259
10.2 記憶體管理260
10.2.1 記憶體管理方式260
10.2.2 虛擬記憶體261
10.2.3 記憶體碎片261
10.2.4 虛擬位址、邏輯位址、線性位址、物理位址262
10.2.5 Cache替換演算法262
10.3 使用者程式設計介面264
10.3.1 庫函式呼叫與系統調用264
10.3.2 靜態連結與動態連結264
10.3.3 靜態程式庫與動態連結程式庫265
10.3.4 用戶態和核心態265
10.3.5 用戶棧與內核棧266

第11章 網路267
11.1 TCP/IP267
11.1.1 協議267
11.1.2 TCP/IP268
11.2 RESTful架構風格268
11.2.1 REST268
11.2.2 約束條件269
11.3 HTTP270
11.3.1 URI和URL270
11.3.2 HTTP協議271
11.3.3 HTTP報文272
11.3.4 HTTP首部273
11.3.5 緩存275
11.4 TCP277
11.4.1 連接管理277
11.4.2 確認應答278
11.4.3 視窗控制280
11.4.4 重傳控制281
11.5 HTTPS282
11.5.1 加密282
11.5.2 數位簽章283
11.5.3 數位憑證284
11.5.4 安全通信機制285
11.6 HTTP/2.0285
11.6.1 二進位分幀層286
11.6.2 多路通信287
11.6.3 請求優先順序287
11.6.4 伺服器推送288
11.6.5 首部壓縮288

第12章 設計模式289
12.1 單例模式289
12.2 工廠模式289
12.3 適配器模式291
12.4 觀察者模式292

附錄 常見面試筆試題293