分享
  1. 首页
  2. 文章

一次糟糕的golang面试体验

airun · · 3658 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

因为现在的公司加班过于严重,一周五个工作日我有四个工作日是晚上11点以后才能下班,偶尔可能会到凌晨一点,两点...甚至到四点,第二天还要正常到公司。因为实在有点扛不住了就公开了下简历,准备重新看看外面的情况。
然后就有好几个猎头找到了我,我就把我的简历给了他们;后来呢有一个猎头给我推荐一个一家公司(位于五角场附近,我本身也就附近住)所以就没多考虑准备过去看看;时间定在了周五下午3点。后来这个猎头又找我说这家公司需要在简历上涉及到三个问题;猎头就把三个问题给到了我问我会不会,我看完之后感觉没什么问题就简短的回答了下给了他;面试时间依然是周五下午3点钟

三个问题

1.并发达到1万/秒怎么做TCP的连接管理?
2.消息中间件如果异常,造成数据丢失怎么处理?
3.并发量持续增长的情况下,怎么保证原有服务不受影响?

按时到了猎头给我的公司地址,然后爬楼梯到了面试的楼层。给面试官打了电话告知我的所在位置,开始了漫长的等待,期间也没看到前台什么的(本来想着会不会有一个漂亮的前台美眉给我倒杯水,缓解缓解面试前的紧张感),等了大概有20分钟。

有一个中年大叔拿着几张纸,一台笔记本电脑然后带我到一个小桌子旁边做下;他把手上的两张纸给到我让我先做做题目,我看了下纸上有五道题,其实都比较简单;有两道题比较有意思

1、下面的代码会输出什么?

 str := "123"
 str[0] = 'a'
 ([]byte)(str)[1] = `b`
 fmt.Printf("%v", str)

我的第一反应是比较懵逼的,我从来没有用过这种骚操作;所以我的回答是

 str := "123"
 str[0] ='a' //回答:(这里完成赋值之后str的值应该是 a23)经过验证,这里会报错,没有这种操作
 ([]byte)(str)[1]='b' //回答:(这里赋值之后str的值应该还是 a23 )
 //这里因为是蒋str转换成了[]byte对str没有影响所以str的值不会改变

2、下面代码会输出什么?(这道题是我跟面试官产生分歧的一道题)

 m := map[string]int{
 "a":1,
 "b":2,
 "c":3,
 }
 for k,v := range m {
 go func(kk * string,vv * int) {
 fmt.Printf("%v,%v",*kk,*vv)
 }(&k,&v)
 }

我:这个地方输出顺序不确定会输出什么,只有在闭包真正执行的时候指针kk跟vv里面存在是什么就会输出什么

面试官:回答错误,这个地方应该永远都是数据m中最后一个k跟v的值

我:不可能的,这个地方看编译器跑的快还是慢了,闭包在真正执行的时候kk跟vv究竟在for循环中跑到那个k,v了

后面因为这个问题我们争论了一会儿
最后面试官说:这是我经过编译器验证过的,不是从网上抄的是不可能出错的;你有自己的想法很好,但是要尊重事实

这个问题考察了两个点
1、map的顺序不是固定的
2、闭包会引用自由变量,闭包内部在真正执行的时候才获取里面的值

未完待续


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:airun

查看原文:一次糟糕的golang面试体验

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
3658 次点击 ∙ 1 赞
14 回复 | 直到 2019年08月07日 13:32:38
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏