Py 狗转 Go 面试遇到问题

2018-06-08 20:03:02 +08:00
 xiaqi
一. 先是基本的 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 后台系统,如何实现扩展?如何实现高可用?
6379 次点击
所在节点    程序员
28 条回复
ToT
2018-06-09 05:49:05 +08:00
@EchoUtopia 哈哈哈。别人是怎么学到的呢?实际用过吗
wweir
2018-06-09 06:18:56 +08:00
一 3 老司机表示即使答不上来这种无聊的题,即使能答上来也不想答
xiaqi
2018-06-09 06:57:12 +08:00
@wweir 不不不,这个不仅仅是基本的,而且,还承接下一题,初始化的默认值。

当时我是没列完,然后我回来,再列了下(不知道有没漏)
int, float, string, array, slice, map, interface, struct, chan, complex

它们是否有默认初始值,有的话是多少?
还有 int,int32,int64,float,float32,float64
这类,初始值是否一样?
missdeer
2018-06-09 07:48:29 +08:00
好慌,这么些年 go 白写了
yepinf
2018-06-09 07:59:23 +08:00
server 热更新原理不都是一样的吗
xiaqi
2018-06-09 08:28:30 +08:00
@yepinf 像 Python,知道像模块可以 reload,然后 autoreload.pypyded_reload.py 。但是 Go 的 grace,上面楼没说的话,还真不知道!

当然其他办法,像上面大佬说的,代理+队列,开个新进程或者服务,网关把新进来的用户导入到新进程,等老进程用户走完就关掉它。

第三其他问题,我感觉应该是除了语言相关,就是应该跟架构相关
abmin521
2018-06-10 10:06:51 +08:00
Yoock
2018-06-10 11:58:54 +08:00
写了两年的 go,没有回答语法题的欲望

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/461618

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX