

由于外链问题,完整版可【点击】阅读原文或到 github项目 中,欢迎关注。
目录(善用Ctrl+F)
基础入门
新手
数据类型
- 连nil切片和空切片一不一样都不清楚?那BAT面试官只好让你回去等通知了。
- golang面试题:字符串转成byte数组,会发生内存拷贝吗?
- golang面试题:翻转含有中文、数字、英文字母的字符串
- golang面试题:拷贝大切片一定比小切片代价大吗?
- map不初始化使用会怎么样
- map不初始化长度和初始化长度的区别
- map承载多大,大了怎么办
- map的iterator是否安全?能不能一边delete一边遍历?
- 字符串不能改,那转成数组能改吗,怎么改
- 怎么判断一个数组是否已经排序
- 普通map如何不用锁解决协程安全问题
- array和slice的区别
- golang面试题:json包变量不加tag会怎么样?
- 零切片、空切片、nil切片是什么
- slice深拷贝和浅拷贝
- map触发扩容的时机,满足什么条件时扩容?
- map扩容策略是什么
- 自定义类型切片转字节切片和字节切片转回自动以类型切片
- make和new什么区别
- slice ,map,chanel创建的时候的几个参数什么含义
- 线程安全的map怎么实现
流程控制
进阶
包管理
优化
- golang面试题:怎么避免内存逃逸?
- golang面试题:简单聊聊内存逃逸?
- 给大家丢脸了,用了三年golang,我还是没答对这道内存泄漏题
- 内存碎片化问题
- chan相关的goroutine泄露的问题
- string相关的goroutine泄露的问题
- 你一定会遇到的内存回收策略导致的疑似内存泄漏的问题
- sync.Pool的适用场景
- go1.13sync.Pool对比go1.12版本优化点
并发编程
- golang面试题:对已经关闭的的chan进行读写,会怎么样?为什么?
- golang面试题:对未初始化的的chan进行读写,会怎么样?为什么?
- sync.map 的优缺点和使用场景
- sync.Map的优化点
包
- 常用官方包说明
- 常用第三方包说明
- 常用框架
- 完整标准库列表
- 优秀的第三方库
- 音频和音乐
- 数据结构:Go中的通用数据结构和算法
- 分布式系统:Go中的通用数据结构和算法
- 电子邮件:实现电子邮件创建和发送的库和工具
- 嵌入式脚本语言:在go代码中嵌入其他语言
- 错误处理
- 处理文件和文件系统的库
- 金融:会计和财务软件包
- 游戏开发:游戏开发相关库
- 地理位置:地理相关的位置信息和工具库
- 编译器相关:转到其他语言
- Goroutines:用于管理和使用Goroutines的工具
- 图形界面:用于构建GUI应用程序的库
- 图片:用于处理图像的库
- 物联网:物联网设备编程库
- JSON格式:用于处理JSON的库
- 机器学习:常用机器学习库
- 微软办公软件
- 自然语言处理
- 网络:与网络各层配合使用的库
- 视频:用于处理视频的库
高级特性
- golang面试题:能说说uintptr和unsafe.Pointer的区别吗?
- golang 面试题:reflect(反射包)如何获取字段 tag?为什么 json 包不能导出私有变量的 tag?
- 协程和线程的差别
- 垃圾回收的过程是怎么样的?
- 什么是写屏障、混合写屏障,如何实现?
- 开源库里会有一些类似下面这种奇怪的用法:
var _ io.Writer = (*myWriter)(nil),是为什么? - GMP模型
- 协程之间是怎么调度的
- gc的stw是怎么回事
- 利用golang特性,设计一个QPS为500的服务器
- 为什么gc会让程序变慢
- 开多个线程和开多个协程会有什么区别
- 两个interface{} 能不能比较
- 必须要手动对齐内存的情况
- go栈扩容和栈缩容,连续栈的缺点
- golang怎么做代码优化
- golang隐藏技能:怎么访问私有成员
问题排查
源码阅读
汇编
实践常用工具
其他
常用官方包
- fmt - 实现格式化的输入输出操作,其中的fmt.Printf()和fmt.Println()是开发者使用最为频繁的函数。
- io - 实现了一系列非平台相关的IO相关接口和实现,比如提供了对os中系统相关的IO功能的封装。我们在进行流式读写(比如读写文件)时,通常会用到该包。
- bufio - 它在io的基础上提供了缓存功能。在具备了缓存功能后, bufio可以比较方便地提供ReadLine之类的操作。
- strconv - 提供字符串与基本数据类型互转的能力。
- os - 本包提供了对操作系统功能的非平台相关访问接口。接口为Unix风格。提供的功能包括文件操作、进程管理、信号和用户账号等。
- sync - 它提供了基本的同步原语。在多个goroutine访问共享资源的时候,需要使用sync中提供的锁机制。
- flag - 它提供命令行参数的规则定义和传入参数解析的功能。绝大部分的命令行程序都需要用到这个包。
- encoding/json - JSON目前广泛用做网络程序中的通信格式。本包提供了对JSON的基本支持,比如从一个对象序列化为JSON字符串,或者从JSON字符串反序列化出一个具体的对象等。
- http - 通过http包,只需要数行代码,即可实现一个爬虫或者一个Web服务器,这在传统语言中是无法想象的。
常用第三方包
- 数据库操作 - github.com/jinzhu/gorm github.com/go-xorm/xorm
- 搜索es - github.com/olivere/elastic
- rocketmq操作 - github.com/apache/rocketmq-client-go/v2
- rabbitmq 操作 - github.com/streadway/amqp
- redis 操作 - github.com/go-redis/redis
- etcd 操作 - github.com/coreos/etcd/clientv3
- kafka - https://github.com/Shopify/sarama https://github.com/bsm/sarama-cluster
- excel 操作 - github.com/360EntSecGroup-Skylar/excelize
- ppt 操作 - golang.org/x/tools/cmd/present
- go-svg 操作 - https://github.com/ajstarks/svgo
- go 布隆过滤器实现 - https://github.com/AndreasBriese/bbloom
- json相关 - https://github.com/bitly/go-simplejson
- LRU Cache实现 - https://github.com/bluele/gcache https://github.com/hashicorp/golang-lru
- go运行时函数替换 - https://github.com/bouk/monkey
- toml - https://github.com/toml-lang/toml https://github.com/naoina/toml
- yaml - https://github.com/go-yaml/yaml
- viper - https://github.com/spf13/viper
- go key/value存储 - https://github.com/etcd-io/bbolt
- 基于ringbuffer的无锁golang workpool - https://github.com/Dai0522/workpool
- 轻量级的协程池 - https://github.com/ivpusic/grpool
- 打印go的详细数据结构 - https://github.com/davecgh/go-spew
- 基于ringbuffer实现的队列 - https://github.com/eapache/queue
- 拼音 - https://github.com/go-ego/gpy
- 分词 - https://github.com/go-ego/gse
- 搜索 - https://github.com/go-ego/riot
- windows COM - https://github.com/go-ego/cedar
- session - https://github.com/gorilla/sessions
- 路由 - https://github.com/gorilla/mux
- websocket - https://github.com/gorilla/websocket
- Action handler - https://github.com/gorilla/handlers
- csrf - https://github.com/gorilla/csrf
- context - https://github.com/gorilla/context
- 过滤html标签 - https://github.com/grokify/html-strip-tags-go
- 可配置的HTML标签过滤 -


9869

被折叠的 条评论
为什么被折叠?



