分享
  1. 首页
  2. 文章

go golang 笔试题 面试题 笔试 面试

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

go golang 笔试题 面试题 笔试 面试

发现go的笔试题目和面试题目还都是比较少的,于是乎就打算最近总结一下。虽然都不难,但是如果没有准备猛地遇到了还是挺容易踩坑的。

就是几个简单的笔试题目,也可能面试的时候直接给看让说结果。

1, 用不同的goroutine去操作map的时候会存在线程同步的问题,把map换成int ,这个问题同样存在。在go里是这样。
2,下面这段代码输出的值为:
 func (){
 jsonStr:=[]byte(`{"age":1}`)
 var value map[string]interface{}
 json.Unmarshal(jsonStr,&value)
 age:=value["age"]
 fmt.Println(reflect.TypeOf(age))
 //float64
}
3,下边代码是否有问题,问题在哪里

 import (
 "sync"
 "fmt"
)
type UserAges struct {
 ages map[string] int
 sync.Mutex
}
func (u *UserAges)Add(name string,age int) {
 u.Lock()
 defer u.Unlock()
 u.ages[name] = age
}
func (u *UserAges)Get(name string)int{
 if age,ok:=u.ages[name];ok{
 return age
 }
 return -1
}

问题在于,ages没有暴露背外部的包,导致调用者无法初始化ages。然后在调用add函数时,就会报错。考察函数的作用域问题。

4,下边代码的输出结果是什么?
func TestArrayAndSlice(){
 s1:=[]int{1,2,3}
 s2:=s1[1:]
 for i:=range s2{
 s2[i]+=10
 }
 fmt.Println(s2)
 s2=append(s2, 4)
 for i:=range s2{
 s2[i]+=10
 }
 fmt.Println(s2)
}

输出结果如下:这个是在考察数组和切片用s2截取s1的下边为1及之后;而后执行操作。

[12 13][22 23 14]

5,下边代码输出什么

```go
func TestDoit(){
doit:= func(arg int) interface{}{
var result *struct{}=nil

 if (arg>0) {
 result = &struct{}{}
 }
 return result
}
//输出结果。
//-1:result: <nil> 为空的匿名结构体
//1://result: &{} 匿名结构体的地址
if res:=doit(1);res!=nil{
 fmt.Println("result:",res)
}

}
```

6,下边代码的输出结果是什么
//放在main里边
 //指定只能用一个逻辑处理器,方便看调度顺序。
 runtime.GOMAXPROCS(1)
 wg:=sync.WaitGroup{}
 wg.Add(20)
 for i:=0;i<10 ;i++ {
 go func() {
 fmt.Println("i",i)
 wg.Done()
 }()
 }
 for i:=0;i<10 ;i++ {
 go func(i int) {
 fmt.Println("j",i)
 wg.Done()
 }(i)
 }
 wg.Wait()
 /*
 j 9
 i 10
 i 10
 i 10
 i 10
 i 10
 i 10
 i 10
 i 10
 i 10
 i 10
 j 0
 j 1
 j 2
 j 3
 j 4
 j 5
 j 6
 j 7
 j 8
 */

这个要注意,第一个for里没有传参数,第二个传参数了。所以第一个for里启动的goroutine用的i其实是主线程里的i;之所以都是10,(也有可能前面几个<10);是因为调用i的时候,i在主线程内已经加到10了。而第二个for里的i是通过参数传递,所以会打印0〜9;
至于为什么会先打印J,9;希望有大神来回答下。

暂时先写这么多,回头再接着加。

转载注明出处--名白

http://www.cnblogs.com/mingbai/p/go-golangCodingTest.html


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

本文来自:博客园

感谢作者:mingbai

查看原文:go golang 笔试题 面试题 笔试 面试

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

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

用户登录

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

今日阅读排行

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

一周阅读排行

    加载中

关注我

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

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

给该专栏投稿 写篇新文章

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

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