Golang 面试题

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

1、代码(golang) 运行完成后,计算变量的值。
1)d的值是多少?

d := make(map[string][]int)
d[“a”] = []int{1,2,3}
d[“b”] = []int{4,5,6}
for _,v := range d {
    v[0] = 2
}  
fmt.Println(d) //  a:[2 2 3] b:[2 5 6]
  1. varr 的值是多少?
arr := make([]*int,0)
e := make(map[string]int)
e[“a”] = 1
e[“b”] = 2
for _,v := range e {
    arr = append(arr,&v)
}
varr := make([]int,len(e))
for i,_ := range varr {
    varr[i] = *arr[i]
} 
fmt.Println(varr)  // 2 2

2用golang实现一个简单的集合类型,使之类似python中的set,集合中不能存在相同值的无素,包含元素的添加、删除以及是否存在的功能。

3、 简单描述一下 golang中reflect. TypeOf和reflect. ValueOf的功能及应用场景”

参考答案:
reflect Typeof获取type, reflect valued获取vaue,
反射的应用场景,gorm里面用的就是反射,不知道传入函数的参数类型,函数需要在运行时处理任意参数对象,这种需要对结构体对象反射。典型应用场景是ORM,gorm

4、multipart/form-data与常规的form表单数据有什么区别? http返回的状态码2xx,3xx, 4xx, 5xx代表什么含义(x表示一一个数字)?

参考答案:
http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。常规from是只能上传键值对,并且键值对都是间隔分开的。

2xx表示这一类型的状态码,代表请求已成功被服务器接收、理解、并接受。
3xx表示这类状态码代表需要客户端采取进一步的操作才能完成请求
4xx表示这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理
5xx表示这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理

5、一般情况下http是无状态的,服务端可以以通过哪些方式来识别客户端的登录信息?

参考答案:
由于http是无状态的,所以正常情况下在浏览器浏览网页,服务器都是通过访问者的cookie(cookie中存储的jsessionid)来辨别客户端的身份的,当客户端进行登录服务器也会将登录信息存放在服务器并与客户端的cookie中的jsessionid关联起来,这样客户端再次访问我们就可以识别用户身份了。但是对于api服务器,我们不能让访问者先登录再进行访问这样不安全,也不友好。所以一般情况我们都是需要客户端提供一个key(每个key跟用户是一对一关联的)来识别请求者的身份。


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

本文来自:简书

感谢作者:LLL_小浪

查看原文:Golang 面试题

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

1351 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传