golang面试

作者: 无拘无束的猪 | 来源:发表于2020-08-26 23:22 被阅读0次

答案会在后续更新

cch关于知乎go面试题的部分答案:https://xargin.com/answers-for-some-interview-questions/

进程、线程、协程、goroutine区别,windows的协程和goroutine区别

go有用过什么框架或者包

go的调度、GMP什么运行

mysql相关的golang包

redis相关的包、redigo、goredis,redis的haspmap,zset原理

goroutine是连续栈,可以扩容,那么Linux线程分配的栈不能类似扩容机制吗

golang的包使用和原理分析,map,sync.map,container(list heap),net/http,io,bytes

data4000000000int,20核40线程256G内存,怎么快速求和?大文件排序,归并排序,小文件再排序。

linux内存分配图,主要是队和栈的位置定位故障

tcp握手和挥手的流程和状态图,以及time_wait什么原因造成,怎么定位解决

goroutine阻塞怎么诊断定位,一般什么原因造成

pprof,net/http/pprof,实时web查看相关信息,cpu、内存,goroutine信息,命令:top、list、traces、web

主要是channel leak或者其他原因,可以runtime打印goroutine信息,数量及内存

runtime三大核心组件

垃圾回收器

内存分配器

协程调度器(并发调度)

线程、协程池

ants

fasthttp使用协程池提升性能,就是使用sync.waitgroup,channel,atomic来控制go的数量

线程模型

主流线程模型主要分为三种,内核级线程、用户级线程、两级线程模型(混合型线程模型)

内核级线程:kse,由于io操作而阻塞,不会影响其他线程运行。java C++11的thread都是内核级线程的封装,1VS1绑定,内核操作创建销毁线程上下问调度资源性能影响较大。

用户级线程:不能很少利用多核cpu,linux的pthred就是,用户级线程VSKSE是(N:1),线程的创建销毁调度都是依靠库来实现,一个进程所有创建的线程都只和同一个KSE运行时动态绑定,内核的多有调度都是基于用户进程,如python的gevent库

两级线程模型:用户线程和KSE是N:M,一个进程可以和多个KSE关联,进程中的多个线程可以分别绑定一个KSE,但是不是KSE唯一绑定,可以多个用户线程映射到同一个KSE,自身调度和系统调度协同工作。

goroutine的生命周期

主动退出和被动退出

1.time.tick(1s)定时退出

2.context通知退出context.Done()

3.外部操作信号退出,signal.notify(ch,SIGINT,SIGTERM)

生命周期

https://xargin.com/state-of-goroutine/

runtime。go,定义了goroutine所有状态。

上图包含gc,去掉gc下图,去掉前缀runtime。

P的状态切换如下。

select有什么用

主要是对channel的IO监听,select「」优化成while

slice的扩容机制、slice结构和数组,map的扩容机制,map的有序读取(依靠key的有序再读取),slice和数组转换

实现消息队列,多生产者多消费者

slice+lock,channel+lock

数据库如何建索引

git merge rebase操作

lru实现

日志包glog.Errorf

golang实现服务器高性能 tcp aocket epool,转发。

mysql索引,优化。

redis的其他类型,zset原理等。

栈多大,系统等

空接口有什么用

字节对齐怎么实现(C语言系统层)

相关文章

  • GO语言面试系列:(五)Gopher 全栈面试参考

    先前准备 Golang 面试用的笔记,仅供参考。 前言 本文结构: 参考资料:笔试面试知识整理、Golang 面试...

  • Golang面试题41道

    Golang面试题41道 大家好,这一期呢,我们来说一下golang的面试题。 第1题什么是golang? go是...

  • golang面试题

    转载面试经历[https://zhuanlan.zhihu.com/p/77425984]golang面试题[ht...

  • golang面试

    答案会在后续更新 cch关于知乎go面试题的部分答案:https://xargin.com/answers-for...

  • GO语言面试系列:(二)常规性Golang面试题解析

    最近在很多地方看到了golang的面试题,看到了很多人对Golang的面试题心存恐惧,也是为了复习基础,我把解题的...

  • 后端研发体系

    记录自己为了面试发现的文章 golang golang中都是值传递,没有引用传递,哪怕是指针,也是指针的值拷贝。 ...

  • Golang面试之Golang进阶

    高并发 高并发模型 内存管理 变量逃逸 垃圾回收

  • Golang面试之Golang基础

    数据类型 闭包的实现 常用包 fmt time strings strconv bytes bufio flag ...

  • Golang筑基 ——常量

    golang中常量的定义使用const关键字相比于C++,golang无define关键字,所以在面试的时候也就不...

  • golang面试题

    近期在看机会,主要主golang方向的。收集一些常用 的golang面试题到个人博客,后续再继续收集完整。实在不想...

网友评论

    本文标题:golang面试

    本文链接:https://www.haomeiwen.com/subject/krbzjktx.html