zoukankan      html  css  js  c++  java
  • go 面试题总结

    1.什么是goroutine,他与process, thread有什么区别?

    2. 什么是channel,为什么它可以做到线程安全?

    3. 了解读写锁吗,原理是什么样的,为什么可以做到?

    4. 如何用channel实现一个令牌桶?

    5. 如何调试一个go程序?

    6. 如何写单元测试和基准测试?

    7. goroutine 的调度是怎样的?

    8. golang 的内存回收是如何做到的?

    9. cap和len分别获取的是什么?

    10. netgo,cgo有什么区别?

    11. 什么是interface?

    1. uint不能直接相减,结果是负数会变成一个很大的uint,这点对动态语言出身的会可能坑。
    2. channel一定记得close。
    3. goroutine记得return或者中断,不然容易造成goroutine占用大量CPU。
    4. 从slice创建slice的时候,注意原slice的操作可能导致底层数组变化。
    5. 如果你要创建一个很长的slice,尽量创建成一个slice里存引用,这样可以分批释放,避免gc在低配机器上stop the world

    面试的时候尽量了解协程,线程,进程的区别。

    明白channel是通过注册相关goroutine id实现消息通知的。

    slice底层是数组,保存了len,capacity和对数组的引用。

    如果了解协程的模型,就知道所谓抢占式goroutine调用是什么意思。

    尽量了解互斥锁,读写锁,死锁等一些数据竞争的概念,debug的时候可能会有用。

    尽量了解golang的内存模型,知道多小才是小对象,为什么小对象多了会造成gc压力。

    https://blog.csdn.net/weiyuefei/article/details/77963810

    https://blog.csdn.net/u010824081/article/details/78181518

    https://blog.csdn.net/yuanqwe123/article/details/81737180

    https://blog.csdn.net/Charliewolf/article/details/82720886

    100题:

    https://blog.csdn.net/itcastcpp/article/details/80462619

    https://blog.csdn.net/qq_36431213/article/details/80686436

    https://blog.csdn.net/weiyuefei/article/details/78851624

    https://blog.csdn.net/smile_YangYue/article/details/81076993

    https://blog.csdn.net/fengxiaozhuzhu/article/details/80920282

    https://blog.csdn.net/qq_28163175/article/details/75287877

  • 相关阅读:
    [转]IUnkown生命周期管理
    [转] com 基本数据类型
    Centos 7 修改开机等待时间 Alex
    乌班图的安装常用命令 Alex
    Ubuntu切换root用户 Alex
    乌班图开启关闭防火墙 Alex
    Ubuntu远程root用户登录 Alex
    Centos 8 更改为阿里云源 Alex
    LVS调度之搭建NAT模型实现 Alex
    解决挂载mount: wrong fs type, bad option, bad superblock on Alex
  • 原文地址:https://www.cnblogs.com/dongzhuangdian/p/10645867.html
Copyright © 2011-2022 走看看