一. 先是基本的 Go 语言问题
1. cap(map) 是否正确? 请说明理由
2. a := make(int, 5, 20)
fmt.Println(a[6])
fmt.Println(a[6:10])
输出的结果是啥?
3. 列出 golang 的所有数据类型
4. 所有数据类型定义时候的默认值
5. lst := []int{1,2,3,4,5}
for i, v := range lst{
/* 如何判断 range 是否有拷贝 lst 一个副本? */
}
6.
type A struct {}
func (a A) m() {
fmt.Println("func m...")
}
func (a *A) n() {
fmt.Println("func n...")
}
ao := A{}
ao.m()
ao.n()
ap := &A{}
ap.m()
ap.n()
/* 上面哪个无法运行? 为什么? 如果能运行, 使用什么方法能区别出来?或者说如何能使其中看起来不正确的使它不要运行? */
7. 用 Python 大致实现 Go 的 channel?
二.
1. 需要屏蔽 10 万个关键字, 写算法实现?
2. [2,3,4,5,7,8], [4,7,8,9,10] 提取公共的数字
3. 1 2 3 4 5 6 7 8 9=100,在里面插入+ 或 - 或者不插入符合(不插入符合,即 1 2 为 12) 使得等式成立? 暴力解法思路以及大概需要遍历多少种结果?
三. 其他问题
1. 爬虫,爬取数十亿的量的时候,应该怎么爬? (从开始,到数据爬取回来到存 数据库的整体)
2. Go server 如何实现热更?
3. server 后台系统,如何实现扩展?如何实现高可用?
1. cap(map) 是否正确? 请说明理由
2. a := make(int, 5, 20)
fmt.Println(a[6])
fmt.Println(a[6:10])
输出的结果是啥?
3. 列出 golang 的所有数据类型
4. 所有数据类型定义时候的默认值
5. lst := []int{1,2,3,4,5}
for i, v := range lst{
/* 如何判断 range 是否有拷贝 lst 一个副本? */
}
6.
type A struct {}
func (a A) m() {
fmt.Println("func m...")
}
func (a *A) n() {
fmt.Println("func n...")
}
ao := A{}
ao.m()
ao.n()
ap := &A{}
ap.m()
ap.n()
/* 上面哪个无法运行? 为什么? 如果能运行, 使用什么方法能区别出来?或者说如何能使其中看起来不正确的使它不要运行? */
7. 用 Python 大致实现 Go 的 channel?
二.
1. 需要屏蔽 10 万个关键字, 写算法实现?
2. [2,3,4,5,7,8], [4,7,8,9,10] 提取公共的数字
3. 1 2 3 4 5 6 7 8 9=100,在里面插入+ 或 - 或者不插入符合(不插入符合,即 1 2 为 12) 使得等式成立? 暴力解法思路以及大概需要遍历多少种结果?
三. 其他问题
1. 爬虫,爬取数十亿的量的时候,应该怎么爬? (从开始,到数据爬取回来到存 数据库的整体)
2. Go server 如何实现热更?
3. server 后台系统,如何实现扩展?如何实现高可用?