深维智讯golang面经(已OC) 1、与或、异或分别代表什么意思 2、1024和1023异或得到了什么 3、chmod 741 文件名 有什么作用 4、说一下为什么TCP需要三次握手 5、说一下为什么tcp需要四次挥手 6、说一下缓存雪崩、穿透、击穿 7、如何判断链表有环 8、那么如何判断环的入口 9、sql内连接、左外连接、右外连接的区别是什么 10、MyISAM、InnoDb引擎的区别 算法
都快签三方了得物还在约二面,不过反正没什么事还是面了… -深挖了下实习,面试官似乎和我实习方向一样 -linux 命令 -http请求过程 -介绍几个限流方案 -断点续传如何保证数据一致性 -最后问了两个完全没听过的名词,一脸懵直接回答不会 全程30min,无手撕
一面 基础: 网络通信用什么框架(gRPC) gRPC的启动流程,应用写好到发布到线上做了哪些操作会给别人用 HTTP1.0和HTTP2.0的区别 实习中用MySQL的时候遇到过哪些问题 实习中用MySQL的优化 A、b、c建联合索引,b和c相等a不等,他们是怎么排序是怎么样的 innoDB默认的事务隔离级别?可重复读会存在什么问题? 除了binlog,还有什么日志 有遇到过死锁的问题吗 线程和进
(应该是g了,easy算法没做出来) 算法 (手里一副扑克牌, 第一张放在桌面上,第二张放回手牌底部, 重复第一步直到手里没牌. 根据桌子上的牌, 推出手里的牌) 一面试完下来就秒了, 面试半小时找规律, 结果发现做错了 讲讲线程、协程、进程区别 讲讲你最喜欢哪个语言,为什么(ababa, 说了go比java以来管理简单,但是他说maven其实比mod强的不是一点) 微服务的优点?对比单体的优点?
上述实现并发的代码中为了保持主线程不挂掉,我们都会在最后写上一个死循环或者写上一个定时器来实现等待 goroutine 执行完毕 上述实现并发的代码中为了解决生产者消费者资源同步问题,我们利用加锁来解决,但是这仅仅是一对一的情况,如果是一对多或者多对多,上述代码还是会出现问题 综上所述,企业开发中需要一种更牛 X 的技术来解决上述问题,那就是管道(Channel) Channel 的本质是一个队列
文件的打开和关闭 和 C 语言一样,Go语言中操作文件也是通过一个 FILE 结构体 type file struct { pfd poll.FD name string dirinfo *dirInfo } type File struct { *file // os specific } Open 函数 func Open(name string) (fi
获取当前时间 package main import ( "fmt" "time" ) func main() { var t time.Time = time.Now() // 2018-09-27 17:25:11.653198 +0800 CST m=+0.009759201 fmt.Println(t) } 获取年月日时分秒 package main
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个 规则字符串,这个 规则字符串 用来表达对字符串的一种过滤逻辑。 相关规则标准详见 百度百科 Go语言官方文档 regexp 包 Go 语言中正则表达式使用步骤 1.创建一个正则表达式匹配规则对象 2.利用正则表达式匹配规则对象匹配指定字符串 package main import ( "s
获取字符串长度 注意:Go 语言编码方式是 UTF-8,在 UTF-8 中一个汉字占3个字节 package main import "fmt" func main() { str1 := "lnj" fmt.Println(len(str1)) // 3 str2 := "公号:代码情缘" fmt.Println(len(str2)) // 12 } 如果字符串中包含中文,
程序和人一样都需要具备一定的容错能力,学会知错就改,所以如果不是不可恢复性、导致系统无法正常工作的错误,如果发生了 panic 我们需要恢复程序,让程序继续执行,并且需要记录到底犯了什么错误 在 Go 语言中我们可以通过 defer 和 recover 来实现 panic 异常的捕获,让程序继续执行 package main import "fmt" func div(a, b int) (r
Go 语言中提供了一个叫做 panic 函数,用于发生异常时终止程序继续运行 package main import "fmt" func div(a, b int) (res int) { if(b == 0){ //一旦传入的除数为0, 程序就会终止 panic("除数不能为0") }else{ res = a / b } return } func
封装性 封装性就是隐藏实现细节,仅对外公开接口 类是数据与功能的封装,数据就是成员变量,功能就是方法 为什么要封装? 不封装的缺点:当一个类把自己的成员变量暴露给外部的时候,那么该类就失去对该成员变量的管理权,别人可以任意的修改你的成员变量 封装就是将数据隐藏起来,只能用此类的方法才可以读取或者设置数据,不可被外部任意修改是面向对象设计本质(将变化隔离)。这样降低了数据被误用的可能(提高安全性和灵
不过就是创建结构体的时候,根据每个对象的特征赋值不同的属性罢了 // 3.创建一个结构体变量 p1 := Person{"lnj", 33} per.say() p2 := Person{"zs", 18} per.Say()
类是用于描述事物的的属性和行为的,而 Go 语言中的结构体正好可以用于描述事物的属性和行为 所以在 Go 语言中我们使用结构体来定义一个类型 type Person struct { name string // 人的属性 age int // 人的属性 } // 人的行为 func (p Person)Say() { fmt.Println("my name
一般名词都是类(名词提炼法) 飞机发射两颗炮弹摧毁了8辆装甲车 飞机 炮弹 装甲车 隔壁老王在公车上牵着一条叼着热狗的草泥马 老王 热狗 草泥马