Q:进程线程协程的区别?
A: 1)概念不同:进程是存放在磁盘上的应用程序通过操作系统加载进内存形成的映像,反映的是应用程序在cpu上动态执行的过程;线程则是相对独立的代码段在cpu上的执行流程,协程则是为满足某些特定的需求场景,如高并发下,从语言层面实现的用户态轻量级线程,os层面并没有协程的概念,协程本质上也是线程。
2)操作系统进行调度处理和资源分配的粒度不同:进程是os进行调度处理和资源分配的基本单位,线程则是os调度处理的最小单位,进程拥有独立的运行时堆栈和从os申请的系统资源,而同一进程的多线程共享进程的堆和系统资源,并拥有独立的栈空间。协程在资源分配上和线程类似,区别在于协程栈空间是动态大小的,逻辑上是无穷大的,其调度管理由应用进程自身控制,即golang的协程调度器
3)调度开销不同:进程>线程>协程

Q:golang相对于C++的优势?
A:1)更高的开发效率:这得益于go相对C++严谨全面的语法特性和设计哲学而言,更简洁、规范、灵活。比如不用再去争论大括号是否换行,某个名字外部无法访问只需首字母小写,不同像C++引入访问控制符和名字空间作用域来精确控制,同时,go官方设计之初,对go的定位不是oop的,去除了oop复杂的继承特性,原生支持组合,对一系列具有相同操作集合的类型声明一个接口类型,可以达到运行时多台的效果。
2)调试效率更高:从语言层面实现了gc,相对于C++有更少的内存问题,比如非法内存访问,内存泄漏,内存管理等,开发者只需关注功能的实现,在调试时多数是一些逻辑bug,虽然C++也有静态或动态内存检漏工具,但会花费时间在内存bug的调试上。并且go自带很多测试和性能监控的开发组件,可以开发出性能更佳,功能正确的程序。
3)运行时效率:比所有动态解释型脚本语言和java效率高,当然和C++没法比,官方benchmark给出的数据是只比C++慢2/3,这个效率非常不错了
4)得益于golang从语言层面实现的协程及调度器,可以更容易开发出高并发的服务框架。

Q:说说你用得多的消息队列,如kafka,nsq等?
A:

Q:关系型数据库和nosql区别,或者问mysql和mongodb的区别?
A:1)关系型数据库的数据在数据组织方式和结构上更加紧密,建表时要定义表字段的类型,插入时,每条记录都要遵循相同的数据定义。nosql对数据组织方式和结构要求相对离散,灵活,以键值对形式存储,不同记录可能根据需要调整键值对,更适应数据组织方式和结构的变化。
2)关系型数据库对事务的支持遵循acid原则,nosql则使用base原则,即基本可用,柔性/软事务,最终一致性。因此,关系型数据库对事务的支持更精确。
3)性能方面,关系型数据库为了维护数据的强一致性付出了代价,且读写都是磁盘IO,读写性能比nosql差,而nosql得益于数据组织方式和结构相对灵活,且数据读写都是内存IO,同时,处理请求时不需进行sql语法分析,进一步提升了读写性能。

Q:说说mysql索引,分类,使用好处,以及索引创建原则?
A:

Q:说说事务的各个特性,以及事务隔离级别,有哪些缺陷?
A:

Q:mysql查询优化有哪些方法?
A:

Q:说说对服务架构的理解,比如微服务?
A:

Q:说说你的项目的服务框架?
A:

Q:协程调度原理
A:

Q:golang gc原理?
A:

Q:说说你认为做得最好的功能模块?
A:

Q:你在项目中遇到过最棘手的问题,如何解决的?
A:

Q:说说你的优缺点?
A:

Q:我公司为何要录用你
A: