Go语言基础
使用var定义一个结构体能不能引用里面的字段。
答:可以。var user User
是可以引用里面的字段的。因为Go语言结构体是一个值类型,也就是说当你声明了一个结构体类型的变量时,实际上是在内存中分配了一块连续的内存空间的,这个空间里面包含这个结构体中定义的所有字段。
Go语言的值类型,引用类型和指针类型
- 值类型:变量直接存储值,内存直接分配在栈中
- 引用类型:变量存储的是一个地址,这个地址对应的空间才是正常存储的数据,内存通常在堆上分配,当没有任何变量引用这个地址的时候,该地址就变成一个垃圾,有GC回收。
值类型: 基本数据类型,包括int系列、float系列、bool、string、数组、结构体
引用类型:指针、slice、map、chan(管道)、interface等都是引用类型
len()字段,len出来之后是什么?
答:如果是字符串的话,那么len出来的是字符串的字节数,Go中一个中文在UTF-8的编码下占3个字节。如果是channel的话,那么len计算的是channel里面当前存在的元素个数。如果是map的话也是同样如此。如果是slice的话,求的也同样是切片里面的元素。
make和new的区别
答:
https://sanyuesha.com/2017/07/26/go-make-and-new/
中文字符串如何遍历才可以防止中文乱码问题?
func main() {
str := "我很喜欢你"
// 无乱码
// 下标遍历
for i, v := range str {
fmt.Printf("str[%d]=%v\n", i, string(v))
}
// 出现了乱码
// for ... range遍历
//for i := 0; i < len(str); i++ {
// fmt.Printf("str[%d]=%v\n", i, string(str[i]))
//}
// 无乱码
// 转换为[]rune类型,再下边遍历
strRune := []rune(str)
for i := 0; i < len(strRune); i++ {
fmt.Printf("strRune[%d]=%v\n", i, string(strRune[i]))
}
}
了解Go语言字符类型:
http://www.xnip.cn/view/18.html
切片和数组的区别
看书《Go语言设计与实现》
defer+recovery会发生什么?
http://www.xnip.cn/view/64.html
https://gobyexample.com/recover
计算机网络
http状态码
- 1xx属于提示信息,表示目前是协议处理的中间状态
- 2xx表示服务器成功处理了客户端的请求200 OK:成功状态码,一般有body数据204 No Content:和200基本相同,但是响应头没有body数据206 Partial Content:是应用于HTTP分块下载或者断点续传,表示响应返回的body并不是资源的全部,而是一部分
- 3xx表示客户端请求的资源发生了变动,需要客户端用新的URL重新发送请求获取资源,也就是重定向301 Moved Permanently:永久重定向,说明请求的资源已经不存在了,需要改用新的URL再次访问302 Found:临时重定向,说明请求的资源还在,但暂时需要用另外一个URL来访问301和302都会在响应头里面使用字段Location,指名后续要跳转的URL,浏览器会自动重定向新的URL304 Not Modified:表示资源没有被修改,重定向已经存在缓冲文件,也叫做缓存重定向,也就是告诉客户端可以继续使用缓存资源
- 4xx表示客户端发送的报文有误,服务器无法处理400 Bad Request:客户端请求的报文有错误,但只是一个笼统的错误403 Forbidden:服务器禁止访问资源,并不是客户端的请求出错404 Not Found:请求的资源在服务器上不存在或者没有找到,因此无法提供给客户端
- 5xx表示客户端请求报文正确,但是服务器处理时内部发生了错误500 Internal Server Error:是一个笼统的错误码501 Not Implemented:客户端请求的功能还不支持,类似于即将开业,敬请期待502 Bad Gateway:服务器作为网关或者代理时返回的错误码,表示服务器自身工作正常,访问后端服务器发生了错误503 Service Unavailable:表示服务器当前很忙,暂时无法响应客户端,网络服务正忙,请稍后重试
操作系统
进程,线程,协程的区别(超高频考点)
看博客重点学习,超级高频,面了5次,5次全考!!
先讲什么是进程,线程和协程:
- 进程:https://blog.csdn.net/qq_61039408/article/details/126480756
- 线程:https://blog.csdn.net/qq_61039408/article/details/127569479
- 协程:https://www.educative.io/answers/what-is-a-coroutine
说明概念之后再谈区别:
https://segmentfault.com/a/1190000040373756
MySQL
为什么使用B+树作为索引?
redo log
看看《小林coding》
#我的实习求职记录#