1.tcp三次握手

2.tcp实现可靠传输的方法
- 数据的确认和重传
- 合理分包,排序
- 数据的校验
3.tcp的拥塞控制
一、拥塞
1、概念:在某段时间,如果对网络中的某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要发生变化,这种情况叫阻塞
2、拥塞控制:防止过多的数据注入到网络当中,这样可以使网络中的路由器或链路不致过载。(通过拥塞窗口处理网络拥塞现象的一种机制)
a.前提:网络能够承受现有的网络负荷。
b.拥塞控制是一个全局性的过程,涉及到所有的主机、路由器,以及与降低1网络传输性能有关的所有因素。
c.与流量控制的区别:流量控制往往是指点对点通信量的控制,是个端到端的问题。流量控制所要做的就是控制发送端发送数据的速率,以便使接收端来得及接收。
d.代价:需要获得网络内部流量分布的信息。在实施拥塞控制之前,还需要在结点之间交换信息和各种命令,以便选择控制的策略和实施控制。这样就产生了额外的开销。拥塞控制还需要将一些资源分配给各个用户单独使用,使得网络资源能更好的实现共享。
3.拥塞控制的几种方法
慢开始 拥塞避免 快重传 快恢复
4.socket编程实现tcp的过程
创建套接字,绑定套接字,监听套接字,接收连接请求
5.https的原理

6.套接字的好处
文件描述符
7.C++ new delete区别
应该是new和malloc
8.C++内存相关
一般就设计堆区,栈区
9.如何理解C++三大特性
封装继承多态
10.AVL树 特性
平衡二叉树,每一个根节点的左子树的深度和右子树的深度不超过1
11.完全二叉树 有n个结点,求深度
具有n个结点的完全二叉树的深度为「log2n」+1
12.链表的特点
手撕代码 快排
进程和线程的区别
- 根本区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位
- 在开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。
- 所处环境:在操作系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行)
- 内存分配方面:系统在运行的时候会为每个进程分配不同的内存空间;而对线程而言,除了CPU外,系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享资源。
- 包含关系:没有线程的进程可以看做是单线程的,如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程。
ArrayList和Linkedlist的区别
ArrayList是组数,LinkedList是链表
说一下JVM内存模型,
以及垃圾回收算法,
cookie和session的区别
一般只要回答出这一点即可
- Cookie 在客户端(浏览器、易伪造、不安全),Session 在服务器端(会消耗服务器资源)。
算法:给定一个矩阵,从左上角开始只能往下或者右走,求到达右下角的最小权值路径
简单的动态规化题目
二面(问的量最大的一次,层层递进让我头皮发麻):
问答:(这个面试官人超级好,我讲不出来还会主动提醒,声音也好听,可惜我也是个男的)
自我介绍
redis数据类型
string list Hash Set
redis缓存淘汰和key过期策略
redis缓存存在的问题(就是击穿雪崩内些)以及解决方法
介绍一下mysql索引
聚集和非聚集索引区别
索引为abc且查询条件为a=xxx order by b时能用上哪个索引
说下http协议,和cookie有关的字段是哪个
content-type在传递表单数据的时候是什么值
urlencode是什么
描述java线程池添加任务的过程,一致性哈希是什么
hashmap的底层结构
布隆过滤器是什么
mysql有哪些事务隔离默认的事务级别是什么
算法:LRU写下大概的代码
LRU双向链表加哈希,也是常考的点。
单链表的回文判断要求O1空间
找到链表的中点,将后一部分反转,即可。
三面:
问答:自我介绍,
一道大数据量的题目,A文件有3T,里面放的是uid+uname,B文件2T,里面放的是uid+unage,找出相同的uid并写成uid+uname+uage的样子,限制内存2G
算法:求一棵树的镜像,给我一个List<User>,User有自己的id和父亲的id,要我转成一棵树
实习的待遇还是不错的,大小周,一天340,只不过地点在成都我想回杭州。
问答:线程池的工作流程,项目相关
线程池相关的内容也问的比较多
算法:有序链表的合并
这道题比较容易
二面7.12:
问答:如何实现分布式锁(我只知道redis可以)
一道控制QPS的题(不是很懂这题是啥意思,阿里之前也问过,一直没搞懂,希望有遇到类似的同学分享一下通用的解题思路)
redis和java中原子类自增怎么是实现
算法:手写hashmap的put方法(不考虑扩容红黑的情况)
单链表的反转
经典题目
单链表每k个翻转
这道题目比较难。
三面7.23:
问答:无
算法:罗马数字字符串转阿拉伯数字
Leetcode原题, 这道题目把IV这种情况单独考虑即可,不算难
递增重复数组找target出现的范围([0,1,1,1,2,3,4,4,5],target为1的话要输出1的起始和结束下标即1和3,我的做法是两次二分,
就是标准的两次二分,C++ 可以直接调用upper_bound和lower_bound的函数。
一面
是一个年轻的小哥哥,氛围比较轻松
1、自我介绍;
2、算法题:给一个数字字符串,输出所有的合法IP;
这道题目有点难度,考察DFS回溯
3、算法题: 求K个有序数组整体的中位数;
这道题目难度较大。
4、算法题:二维的01矩阵中,找出全是1的最大正方形;
动态规化题目
5、算法题:三个颜色的球各100个,同一种颜色的球之间没有差别,在这300个球中取100个有多少种取法?
说了思路,算了半天没算出最后的结果
总结,这五道算法题,均有较大难度。
6、解释TCP的time wait
确保最后一个确认报文段能够到达。如果 B 没收到 A 发送来的确认报文段,那么就会重新发送连接释放请求报文段,A 等待一段时间就是为了处理这种情况的发生。
7、linux系统中按下ctl c 系统做了什么
发送了一个信号,终止了进程
二面
二面面试官上来先自我介绍,好像是做系统架构的,貌似中层领导,太紧张没听清,气场很足
他说话很有逻辑
1、 自我介绍
2、询问实习、在校项目、专业
我没说太多,因为是跨专业
3、算法题:一个数组中,找出三个数的和为target,找出一组
3sum题目,直接做事件复杂度为O(N^3), 排序双指针,时间复杂度为O(N^2)
4、算法题:二叉树中序遍历的后继节点
剑指offer原题?
一开始就说了我的思路,但是写的时候修修改改耽误了很久,最后也没写出来,他说思路是这样就没说啥了。
翻看了一下博客上这道题都会有一个指向父节点的指针,太紧张忘记了他有没有说明了,这道题挺考逻辑的,思路一乱我有些慌
5、问了他部门的技术栈 ,答是Go和python。
这一面面完我死心了,表现得太差了,我要是领导绝对就把这种人挂掉,万万没想到,隔一天通知三面
三面
1、自我介绍
2、说给我二十分钟完成链表相关的代码填充:1)、完成链表删除函数
2)、K个有序不重复链表merge成一个有序不重复链表
3、 他写了个fork()相关的一段代码,问fork()了几个子进程,打印了几个“1”,我不太会,看循环了两次就说是2了,应该是错的
for(int i = 0; i < 2; i++)
{
fork();
cout << 1 << endl;
}

4个进程,6个1
4、描述app点击登录后发生了什么?
我简单描述了客户端、服务器端、http动作,看他还在等我回答,就又说了下http的get\post,中间他问了什么是动态请求、cookie\session
5、问他部门的相关业务,他说这一轮是交叉面,他不是那个部门的,具体的可以之后与部门或HR联系;问他有几面,他说一般三面到四面。
这一轮感觉很友善,很nice
字节跳动游戏研发提前批面经:
一面(一个小时)
Static和const的区别?修饰函数和变量的区别?
Stacic改变作用域为这个程序
指针和引用的区别,什么情况下用指针比较好,什么情况下用引用比较好?
如果要改变指向对象,用指针。
C 多态是怎么一回事?
虚函数,父类指针指向派生类,调用派生类函数
Udp怎么能保证数据按需求到达?
怎么检查内存泄漏和避免内存泄漏需要注意什么?
双链表和单链表相比,有什么不同?
这个题目比较简单
动态规划和递归的区别?
动态规化只是写出转移方程,可以用迭代实现
树的实际使用都有哪些?
黑红树查找
用什么树能排序?
二分查找树堆
虚拟内存是怎么一回事?
TCP和UDP的区别,以及为什么游戏不能用TCP?(MMO)
网关的作用是什么?
二面(40多分钟)
说一下悲观锁和乐观锁?
悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。[1]
乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。[1] 乐观锁不能解决脏读的问题。
CAS存在的问题知道么?怎么解决?
泛型了解过么?
C++ 模板
泛型是什么时候确定的,编译期还是运行期?
编译
Const和#define的区别?
define不会做类型检查,只展开
要是让你实现智能指针你怎么设计?
智能指针
TCP的三次握手说一下?

四次挥手呢?

Closed_wait怎么回事?产生这个问题的原因是什么呢?
服务器没有来得及发出第三次挥手。
说一下你了解的IO模型吧?
同步阻塞/同步非阻塞/异步非阻塞/
同步和异步的区别是什么啊?
同步,是所有的操作都做完,才返回给用户结果。即写完数据库之后,在相应用户,用户体验不好。
异步,不用等所有操作等做完,就相应用户请求。即先相应用户请求,然后慢慢去写数据库,用户体验较好。
Linux软连接和硬连接知道么?
Awk、sed和grep会么?
这三个命令偏运维
你了解过mysql存储引擎么?
设计模式你平时都用哪些啊?
指令重排你听说过么?
两个有序的数组,让你去找出他们中一样的元素你怎么找?
如果要求空间复杂度为O(1)呢?
再提一下,你知道TCP的SYN攻击么?
三面(50多分钟)
STL说一下?
标准模板库,容器,算法,分配器
智能指针怎么设计的?
引用计数
MMO游戏有个很大的地图,其中有NPC,玩家,敌人,怎么存储这个地图和玩家,玩家可能会实时移动?
你的项目中你觉得哪比较满意?
Windows和linux联合编程应该怎么写程序?
跨平台?宏定义的办法写
未来职业规化

366

被折叠的 条评论
为什么被折叠?



