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

  • 相关阅读:
    借助NetFlow Analyzer的IPAM SPM插件,轻松实现IP和交换机端口管理
    补丁日微软修复了129个漏洞,学习补丁管理最佳实践
    如何通过组策略映射驱动器?
    如何预防磁盘使用率过高?
    ITIL是什么意思?
    Applications Manager—打造最佳云监控策略
    Microsoft 365独家安全解决方案
    怎么让Chrome支持小于12px 的文字?
    vue Router的使用
    vue项目中随机生成验证码
  • 原文地址:https://www.cnblogs.com/dongzhuangdian/p/10645867.html
Copyright © 2011-2022 走看看