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

  • 相关阅读:
    HSV 量化
    小议:部署SharePoint 2013时,无法连接SQL Server问题
    BZOJ 1492 货币兑换 cdq分治或平衡树维护凸包
    初识ASP.NET---一般处理程序
    Vue.js
    jQuery内部原理和实现方式浅析
    关于js中namespace命名空间模式
    MutationObserver 监听DOM树变化
    TCP/UDP常见端口参考
    运算符优先级
  • 原文地址:https://www.cnblogs.com/dongzhuangdian/p/10645867.html
Copyright © 2011-2022 走看看