Go程序员面试笔试宝典
¥
66.81
6.7折
¥
99
全新
库存12件
作者猿媛之家,饶全成 等 编
出版社机械工业出版社
ISBN9787111702429
出版时间2022-05
装帧平装
开本16开
定价99元
货号1202621528
上书时间2024-12-14
商品详情
- 品相描述:全新
- 商品描述
-
作者简介
1.饶全成,中科院计算所毕业,国内知名互联网大厂后端高级研发工程师,Go语言爱好者,公众号“码农桃花源”作者,Go夜读核心成员,golang.design核心成员。2.欧长坤,现为德国慕尼黑大学博士研究员,Go语言组织成员,Go语言中国贡献者俱乐部成员,Go夜读核心成员,golang.design创建者之一,业余活跃在开源社区。
目录
前言
第1部分 语 言 基 础
第1章 逃逸分析
1.1 逃逸分析是什么
1.2 逃逸分析有什么作用
1.3 逃逸分析是怎么完成的
1.4 如何确定是否发生逃逸
1.5 Go与C/C++中的堆和栈是同一个概念吗
第2章 延迟语句
2.1 延迟语句是什么
2.2 延迟语句的执行顺序是什么
2.3 如何拆解延迟语句
2.4 如何确定延迟语句的参数
2.5 闭包是什么
2.6 延迟语句如何配合恢复语句
2.7 defer链如何被遍历执行
2.8 为什么无法从父goroutine恢复子goroutine的panic
第3章 数据容器
3.1 数组与切片
3.1.1 数组和切片有何异同
3.1.2 切片如何被截取
3.1.3 切片的容量是怎样增长的
3.1.4 切片作为函数参数会被改变吗
3.1.5 内建函数make和new的区别是什么
3.2 散列表map
3.2.1 map 是什么
3.2.2 map 的底层实现原理是什么
3.2.3 map 中的 key 为什么是无序的
3.2.4 map 是线程安全的吗
3.2.5 float类型可以作为map的key吗
3.2.6 map 如何实现两种 get 操作
3.2.7 如何比较两个 map 是否相等
3.2.8 可以对 map 的元素取地址吗
3.2.9 可以边遍历边删除吗
第4章 通道
4.1 CSP是什么
4.2 通道有哪些应用
4.3 通道的底结构
4.3.1 数据结构
4.3.2 创建过程
4.3.3 接收过程
4.3.4 发送过程
4.3.5 收发数据的本质
4.4 通道的关闭过程发生了什么
4.5 从一个关闭的通道里仍然能读出数据吗
4.6 如何优雅地关闭通道
4.7 关于通道的happens-before有哪些
4.8 通道在什么情况下会引起资源泄漏
4.9 通道操作的情况总结
第5章 接口
5.1 Go接口与C++接口有何异同
5.2 Go语言与“鸭子类型”的关系
5.3 iface和eface的区别是什么
5.4 值接收者和指针接收者的区别
5.4.1 方法
5.4.2 值接收者和指针接收者
5.4.3 两者分别在何时使用
5.5 如何用interface实现多态
5.6 接口的动态类型和动态值是什么
5.7 接口转换的原理是什么
5.8 类型转换和断言的区别是什么
5.9 如何让编译器自动检测类型是否实现了接口
第2部分 语 言 类 库
第6章 unsafe
6.1 如何利用unsafe包修改私有成员
6.2 如何利用unsafe获取slice和map的长度
6.3 如何实现字符串和byte切片的零复制转换
第7章 context
7.1 context是什么
7.2 context有什么作用
7.3 如何使用context
7.3.1 传递共享的数据
7.3.2 定时取消
7.3.3 防止 goroutine 泄漏
7.4 context底层原理是什么
7.4.1 接口
7.4.2 结构体
第8章 错误
8.1 接口error是什么
8.2 接口error有什么问题
8.3 如何理解关于error的三句谚语
8.3.1 视错误为值
8.3.2 检查并优雅地处理错误
8.3.3 只处理错误一次
8.4 错误处理的改进
第9章 计时器
9.1 Timer底层数据结构为什么用四叉堆而非二叉堆
9.2 Timer曾做过哪些重大的改进
9.3 定时器的使用场景有哪些
9.4 Timer/Ticker 的计时功能有多准确
9.5 定时器的实现还有其他哪些方式
第10章 反射
10.1 反射是什么
10.2 什么情况下需要使用反射
10.3 Go语言如何实现反射
10.3.1 types 和 interface
10.3.2 反射的基本函数
10.3.3 反射的三大定律
10.4 如何比较两个对象是否完全相同
10.5 如何利用反射实现深度拷贝
第11章 同步模式
11.1 等待组 sync.WaitGroup 的原理是什么
11.2 缓存池 sync.Pool
11.2.1 如何使用sync.Pool
11.2.2 sync.Pool 是如何实现的
11.3 并发安全散列表 sync.Map
11.3.1 如何使用 sync.Map
11.3.2 sync.Map 底层如何实现
第3部分 高 级 特 性
第12章 调度机制
12.1 goroutine 和线程有什么区别
12.2 Go sheduler 是什么
12.3 goroutine 的调度时机有哪些
12.4 M:N模型是什么
12.5 工作窃取是什么
12.6 GPM底层数据结构是怎样的
12.7 scheduler 的初始化过程是怎样的
12.8 主 goroutine 如何被创建
12.9 g0栈和用户栈如何被切换
12.10 Go schedule循环如何启动
12.11 goroutine如何退出
12.12 schedule循环如何运转
12.13 M如何找工作
12.14 系统监控sysmon后台监控线程做了什么
12.14.1 抢占进行系统调用的P
12.14.2 抢占长时间运行的P
12.15 异步抢占的原理是什么
第13章 内存分配机制
13.1 管理内存的动机是什么,通常涉及哪些组件
13.1.1 内存管理的动机
13.1.2 内存管理运行时的组件
13.1.3 内存的使用状态
13.2 Go语言中的堆和栈概念与传统意义上的堆和栈有什么区别
13.3 对象分配器是如何实现的
13.3.1 分配的基本策略
……
内容摘要
Go语言是一门既年轻、简捷,又强大、高效、充满潜力的服务器语言。本书使用浅显易懂的语言与大量流程图,深入介绍了Go语言。全书分为三大部分:第1部分(1~5章)为Go语言基础。介绍了Go语言中最基础、最常见的逃逸分析、defer延迟语句、切片、数组、散列表、通道和接口。第2部分(6~11章)为Go语言类库。介绍了Go语言自身的类库,如unsafe、context、错误、计时器、反射和sync包。第3部分(12~14章)为Go语言高级特性。介绍了调度、内存分配、GC,从原理到源码分析,逐渐深入。这三大部分是runtime中最重要、最核心的内容,理解了这三者的原理,才算是对Go语言有了一个比较深入的理解和掌握。
本书是一本计算机相关专业毕业生面试笔试求职参考书,同时也适合有一定工作经验的开发工程师进一步提升自身水平。
主编推荐
1. 内容精良:系统覆盖Go语言基础、语言类库和高级特性三大技术主题,精准定位Go语言学习痛点,系统化提升求职效率。2. 资源丰富:提供780分钟Go语言核心知识点学习视频。3. 重点剖析:涵盖Go调度器源码分析、顺序进程间通信(CSP)原理、泛型的历史及实战、可靠性测试等高频考点。
— 没有更多了 —
以下为对购买帮助不大的评价