有个朋友去字节面试,说被问到这么一个问题:服务端挂了,客户端TCP连接会发生什么?他的回答是会与客户端进行四次挥手,断开连接。这个回答不能说错,也不能说对,只是没有回答到点上。如果【服务端挂掉】是指 服务端进程崩溃,么这个回答的结论是对的,但是没有说明为什么。如果【服务端挂掉】是指 服务端主机宕机呢?所以说,遇到这种半开放性的问题,不能自己直接假设前提,而是要把前提展开来分析。

- 阅读全文 -



程序员通常提到的线程都是用户线程,而操作系统是不知道用户线程这个东西的,操作系统跑的是内核线程,那么这两者之间就必须要有一种联系。所以会有以下几种常见的线程模型一、线程模型一对一线程模型一对一线程模型,也叫内核级线程模型。一个内核线程对应一个用户线程,内核负责每个线程的调度。实现简单,但是线程的创建、删除和切换的代价都由 CPU 完成,代价较高。Java用的就是这种模型。多对一线程模型多对一线程模

- 阅读全文 -



面试官:mysql自增主键用过吧?小菜:用过,建表时指定自动递增就行,然后插入数据就可以不用指定主键的值了面试官:不错,那你知道Mysql自增主键是严格递增的吗?小菜:肯定是递增的呀,诶,好像不对,也有见过不是连续的面试官:那你知道为什么会出现不连续的呢?小菜:emmm......这个岗位可能不是很适合我面试官:那今天就面到这里,还记得进来的路吧......一、自增主键自增主键采用数字型,占用空间

- 阅读全文 -



面向对象编程的语言里,多态是一个非常重要的特性,优点很多,类型解耦,灵活性,可替代性,接口性等。面向对象编程的三大特性:封装、继承,多态。封装和继承都很好理解,多态可能你每天都在用,但却不知道怎么解释它,当然,这也是新手从入门到放弃一个必经之路☺一、多态概念多态?顾名思义,就是一种行为具有多种形态。再具体一点,就是同一个接口,有多个不同的实现。要完全理解Java里的多态,还需要知道两个概念:向上转

- 阅读全文 -



在golang中,struct是设计来存储一组同一个类型或不同类型的数据的一个数据集合,是一种值类型,所以传递时需要区分是否传递其指针。interface也是一种数据结构,存储的是一组具有共性的方法,但是只做定义,其他类型只要实现了这些方法,就是实现了这个接口,可以类比JAVA中的抽象类。使用struct时,可以直接使用func方法数据结构中使用的方法,但是为了解耦这种方式,还是推荐使用inter

- 阅读全文 -