1. go 语言中的 channel 有缓冲和无缓冲的区别是什么
无缓冲chan := make(chan int,0)是堵塞的,当通道被赋值或者读取时,只有再去读取写入了,程序才会继续执行,否则一直堵塞;
有缓冲的是chan := make(chan int,1)是非堵塞的,只有当值的个数超过设定值,才会发生堵塞;
2. go 语言中切片什么时候会扩容,如何扩容
如果切片的容量小于1024,那么扩容的时候slice的cap就翻番,乘以2;一旦元素个数超过1024个元素,增长因子就变成1.25,即每次增加原来容量的四分之一。
如果扩容之后,还没有触及原数组的容量,那么,切片中的指针指向的位置,就还是原数组,如果扩容之后,超过了原数组的容量,那么,Go就会开辟一块新的内存,把原来的值拷贝过来,这种情况丝毫不会影响到原数组。
3. go 语言中有哪些引用类型
slice、map、channel、interface
4. go 语言中有哪些常用的锁
mutex和rwmutex channel
5. mysql 常见存储引擎
innodb myisam memory
6. HTTP 常见请求方法
GET POST PUT DELETE HEAD
7. HTTP 常见状态码和含义
200成功处理了请求
301永久重定向
302临时重定向
304继续使用上次的资源
403禁止访问
404没有找到网页
500服务器内部错误
502网关错误
8. linux 命令
后台运行程序 nohup & jobs
查看进程ps -ef |grep 进程名字
查看端口netstat -anp |grep 端口号
查看进程树pstree
看日志tail -f 文件
字符串:
行
grep :善于利用字符进行获取内容 针对于行的
sed:用于选取替换删除新增 善于使用行数进行操作 针对于行的
列
cut : 提取第几列的内容
awk :awk '条件1{动作1} 条件2{动作2}...' 文件名 针对列的输出
输出
printf:规定输出内容与样式