开场
我先说一下,整个面试的今天晚上就是。持续一个小时的时间,其中15分钟是做一道笔试题目,然后45分钟的话会问一下基础知识。在面试之前,想问一下就是说你的那个如果实习的话,能实习多久啊,实习期?
3个三到6个月吧,3个月是肯定的,然后5、6个月可以争取一下。
什么时候可以开始?
呃4月末左右吧。或者4月中旬?应该也能争取一下。
就是最长6个月对吧。
对。
那在面试之前,你有什么需要问的我的吗?
我想了解,就是我当时看那个呃,其实邮件里我还看不到您是哪个部门呢?然后那个是在官网上看到是游戏中台。想问一下是做什么的
我们部门的话是,Igig下面的一个海外的笔记就是Iegg,叫做就是Ieg的意思,就是我们主要面向那个。腾讯的游戏面向海外市场的发行,研发之类的还有中台这些东西,我们这个中心主要是做账号相关的,也就是做账号一个统一平台。也就是说,在国外有很多登陆渠道有比如说Facebook 啊,有谷歌呀,有苹果呀,有什么V k 呀Twitter 啊,这有各种。所以我们支持多种多种平台接入,但是对游戏这一层是。展现的是统一的一个账号平台,也就是我们会把底层的这些各个渠道的差异给屏蔽掉,而给上层提供一个统一的呃账号,对我们就是做这个工作的。
那这个就是工作地点呢?
地点深圳。还有什么需要?
暂时没有了。
那如果没有的话,那我们就开始,现在是7点过两分,那我们先做面试题目,笔试题目吧。
给出一个可能有几千位的大整数,请输出被n除(n为小于10的正整数)的结果(保留两位小数)。
如4562被5除。输出"912.4"
【注意,没有提交,只是个可以运行的编辑器,条件给的也不充分,需要现场问】
八股
** 说一下就是我开始问这个记录知识,之前的话就是我会问一些问题,你就针对这个问题给出那种。简单的准确的回答出来就是不要铺垫很多,或者是讲很多跟问题无关的,那种就是说,如果觉得实在对这个没有印象,那你就说暂时不太清楚或者什么。对,就是就是有的时候有的人问他A问题的时候之前就是出现过问A问题的时候,但实际上对这块了解不多,但是他说一堆跟A相关,但又不准确的一些东西 **
呃可以,但是我,我可能。唉。就是可能您刚问的时候,我可能不能反应?马上反应过来呀,我可能要反应个五六秒左右。
【拉了,这下给自己限制了,后面没完全想好就开始说】
第一个就是说下进程线程协程的区别。
呃进程是资源分配的单位,那线程是运行的基本单位。而携程其实呃,当然,其实我呃简历上写的是家吧,这个携程我是只稍微了解点,携程应该是。呃比比县城还要小的一种,因为。呃我记得只有好像是10KB就是。呃应该怎么说呢?他他是比县城还要小的一种单位,他可以被创建的更多。
那多进程和多线程有什么区别没有?
呃实际上实际上只说一个进程的话,他一定是包括一个线程的。你你可能说的是,进城是单线程,就是单线程的进程 主要的区别,比如说在使用上什么时候用多进程,什么时候多线程。或者是多进城多线程有什么好处
在有些在有一些语言中,比如说C++的时候,如果一个县城崩了,那么他为了防止这个呃,因为呃,因为在一个进程下面多县城县城之间,他的那个他会共享一些东西呃,那么为了防止这个产生一些内存泄漏或者什么的问题。多县城的话,其中在某些语言一个县城崩了,那么那么整个刷的可能会整个进城的,包括其他县城都会崩掉,比如说这在游戏里。那这个时候就需要可能就需要多进程。
所以你就把刚才的原因再归纳一下,就简单的话说。
多线程模式,容易导致那个一个县城崩啊,崩掉的时候会会导致整个进程,连带连带整个进程,其他县城一块儿崩掉,但是这个时候就需要多多进程。
然后呢?
嗯。这个就是我觉得。主要的一点。
多线程什么时候用呢?
那多县城就是那多县城,这个在县城切换的时候,它就不需要进行,他就不需要那个进从用户台进入内核台。他的开销。呃他的开销会比多进程小。
为什么小
【算了,这么整理太多了】
多线程和多进程之间性能有什么差异?——上下文切换开销巴拉巴拉
是吗?
操作系统里的堆和栈有什么差异?——虚拟空间里地址由低到高和由高到底增长。然后用java 的jvm举例
一致性哈希了解吗?怎么实现的?——有个环什么的
有10亿个数,想取前10个怎么取?——快排思想
你觉得10亿要多少存储量?这个你没算过吗?
具体怎么实现?复杂度是多少?
有其他方法没有?——可以三路快排优化,或者堆排序思想
怎么建堆呢?
怎么判断循环引用?——java可达性分析,spring有个三层的什么东西
说清楚点,怎么实现的?
redis的常见数据类型和它的每种数据类型的底层数据结构是什么?
压缩列表的英文名是什么?——没记英文名
为什么要SDS?——维护了一个长度和分配长度
他有什么用?——O(1)获取长度
还有呢?——暂时只想到这一个
那压缩列表呢?
说一下那个TCP的三次握手,以及每次握手后所处的TCP的状态?——状态?什么叫TCP的状态?就说的SYN、ACK什么的
为什么需要TIME_WAIT?
大量的TIME_WAIT会有什么问题?——挤占资源
挤占什么资源?——额有内存吧?
是吗?——是吧
说一下Tcp,连接建立通讯和销毁过程中,对应的socket的函数?
知道什么叫全连接什么叫半连接吗?——syn和accept队列,第二次三次握手巴拉巴拉
当前的全链接的个数怎么看?——好像是netstat和ss可以看。
具体参数呢?——不记得
最大个数怎么调整?——不知道
Tcp的滑动窗口,做什么用的?
不使用会有什么问题?——极端情况下发送窗口会有负值。
滑动窗口可以解决网络拥塞吗?——有基于滑动窗口的拥塞控制解决啊
滑动窗口他自己为什么解决不了拥塞?——啊吧啊吧。因为滑动窗口虽然说它是这个,它是客户端和服务端。去呃就是会去有一定同步,但不是完全同步。
就是说说具体一点,为什么不能解决?
不是完全同步,就不能解决吗?——确实没想过,不知道
结束
你有什么需要再跟我交流的吗?
有什么建议?:
你跟人交流的时候,尽量把一事情稍微理顺一点,把一句话完整的想清楚了再说。【md凉了】
您觉得go语言的前景怎么样?
巴拉巴拉
你觉得表现怎么样?
你可能了解的深度还是不太够,可能就知道一个大概,所以很多时候我去追问的时候。就回答的不是很准确,就是可能也不是也不能说对不对?但是就是说也不算是很准确,就是说可能也沾边。两方面提高都可以,就是第一方面是我学到一个东西的时候,我就尽量去用实际的情况去验证。比如说Tcp这一块的东西想做过什么,可以全力半连接这些东西,实际是一个是一个可以实操的东西,比如说我可以自己写一下代码去看一下,然后去看一下人家怎么建立的?到底占用什么资源,为什么。摊位的过多会有什么后遗症啊,我怎么解决这个问题?然后前面这半年你怎么看这些东西?实际上就是说当你理论已经知知道了以后,你就可以拿着这个理论去把这个整个体系的上级的把这些东西都研究了一遍,以后你就不仅是懂得的概念,而且你还知道实际情况是怎么样的?无论在面试还在工作中,都是很都是很有用的。是学一下抓包的时候,你可以看一下那个那个,然后看一下李文峰是怎么做的?然后为什么解决不了用餐,因为它是个什么东西,这些东西实际上就是你不能是指这些,比如说把一些又在避免的算法控制算法背下来,但是你更重要的要理解他。就是说,很多事情就是说,实际上,这对于一个学生来说,学生实际上最不缺的就是时间,实际上你把这些东西学到一个理论以后,再逐渐去把这个理论和那个时间相结合,相验证这个验证过程不一定是我要做什么大的项目?实际上如果通过一个很小的东西就可以去验证,这些东西还有堆和,这这些东西也是很验证的。比如堆里面存的什么东西,这里面存的什么东西?这个东西你是在Gdbp或者通过什么手段一看,那你就可以看得到,对这样的情况,你可以挨个去看一下它每个自己存的什么东西。
只要你花时间,都是可以看到的,并不是说一定要通过什么大项目就可以做这些理论,这些基础知识实际,我们我问的都是一些基础知识,都没有,涉及到很多架构生产,所以你这些东西都是可以通过自己的实验会通过一个很小成本的东西就可以看得到的。