Go 面试每天一篇(第 87 天)
点击上方蓝色“Golang来啦”关注我哟
加个“星标”,天天 15 分钟,一起学 Go
你好哇,欢迎来答题,一起来看下昨天面试题目回忆的解析:
1.n 是秒数,下面代码输出什么?
1func main() {
2 n := 43210
3 fmt.Println(n/60*60, " hours and ", n%60*60, " seconds")
4}
参考答案及解析:43200 hours and 600 seconds。知识点:运算符优先级。算术运算符 *、/ 和 % 的优先级相同,从左向右结合。
修复代码如下:
1func main() {
2 n := 43210
3 fmt.Println(n/(60*60), "hours and", n%(60*60), "seconds")
4}
2.下面代码输出什么,为什么?
1const (
2 Century = 100
3 Decade = 010
4 Year = 001
5)
6
7func main() {
8 fmt.Println(Century + 2*Decade + 2*Year)
9}
参考答案及解析:118。知识点:进制数。Go 语言里面,八进制数以 0 开头,十六进制数以 0x 开头,所以 Decade 表示十进制的 8。
解析若有不妥之处,欢迎在留言区交流、指正!
看下今天的题目:
1.关于协程,下面说法正确是()
A.协程和线程都可以实现程序的并发执行;
B.线程比协程更轻量级;
C.协程不存在死锁问题;
D.通过 channel 来进行协程间的通信;
2.在数学里面,有著名的勾股定理:
例如,有我们熟悉的组合(3,4,5)、(6、8、10)等。在 Go 语言中,下面代码输出 true:
1fmt.Println(3^2+4^2 == 5^2) // true
问题来了,下面代码输出什么,请简要说明。
1func main() {
2 fmt.Println(6^2+8^2 == 10^2)
3}
答案以及解析会在下一篇文章中给出,鼓励大家在留言区留下答案,抱团学习,日拱一卒,每天进步一点!
ps:看完文章如果有收获,顺手花 1s 时间帮点下文末右下方的「在看」,感激!
所有学习上的成功,都只依靠两件事 -- 策略和坚持,而坚持本身就是最重要的策略!
推荐阅读:
5 年 Gopher 都不知道的 defer 细节,你别再掉进坑里!
如果我的文章对你有所帮助,点赞、转发都是一种支持!
给个[在看],是对四哥最大的支持
上一篇: Go 面试每天一篇(第 72 天)
下一篇: 雷霆战舰 游戏简化版