1 面试信息

面试形式:视频面试
面试时间:2020-03-05 16:00:00GMT+08:00
面试时长:约两小时
面试职位:客户端开发工程师-产品研发和工程架构部

2 考察内容

1.我们主要考察通用型的业务问题和过往的项目经历
2.价值观和软性技能也是我们选择人才的重要因素

3 面试问题

1.三次握手和四次握手的原理(为什么是四次?)
2.TCP和UDP的区别
3.TCP的可靠性依靠什么实现
4.滑动窗口的作用
5.磁盘调度算法(进程调度算法)
6.虚拟内存
7.内存溢出时如何判断是虚拟内存溢出还是物理内存溢出
面试官解答:可以查看数据结构的地址,如果存在空闲地址段,则是虚拟内存溢出,如果地址段满则是物理内存溢出。
8.LRU算法怎么实现
9.结合实际问题,定义缓冲池结构,使用HashMap如何尽可能高效地实现LRU算法进行页面淘汰(需要明白HashMap的基本原理)
面试官解答:利用队列先进先出的性质,淘汰时删除队首节点。同时,在定义HashMap的<key,value>键值对时,value直接存储节点。

4 机试问题

选择了中等难度(easy,mid,hard),问题如下:
一个数据结构中保存了若干航班飞机的起飞和降落时间,当在飞行中的飞机数量小于K时,处于安全状态,判断输入的数据结构中飞机的时间安排是否安全。


* 面试问题答案整理

1.答:
三次握手:
(1)客户端主动请求建立连接,发送SYN包(同步位SYN=1,序列号seq=x)到服务器端,并进入SYN-SENT状态,等待服务器确认;
(2)服务器端收到客户端发来的SYN包后必须对其进行确认,同时自己也发送SYN包请求连接,即发送ACK+SYN包(确认位ACK=1,同步位SYN=1,确认号ack=x+1,序列号seq=y)到客户端,此时服务器进入SYN-RECEIVED状态;
(3)客户端收到服务器端发来的ACK+SYN包后,向服务器发送确认包(确认位ACK=1,确认号ack=y+1,序列号seq=x+1),此包发送完毕,客户端和服务器端进入ESTABLISHED状态,三次握手完成。
四次挥手:
(1)客户端发送连接释放报文(终止位FIN=1,序列号seq=u)到服务器端,并进入FIN-WAIT-1状态;
(2)服务器端收到连接释放报文,发送确认报文(确认位ACK=1,确认号ack=u+1,序列号seq=v)给客户端,并进入CLOSE-WAIT状态。此时,客户端到服务器方向的传输释放,处于半关闭状态,但服务器端依旧可以向客户端发送数据。客户端收到服务器端的确认报文后,进入FIN-WAIT-2状态,等待服务器端发送连接释放报文;
(3)服务器端将最后的数据发送完毕后,向客户端发送连接释放报文(终止位FIN=1,确认位ACK=1,确认号ack=u+1,序列号seq=w),并进入LAST-ACK状态;
(4)客户端收到服务器端的连接释放报文后,发送确认报文(确认位ACK=1,确认号ack=w+1,序列号seq=u+1)给服务器端,并进入TIME-WAIT状态,在经过2MSL时间后,撤销TCB,进入CLOSED状态。

2.答:

UDP TCP
是否连接 无连接 面向连接
是否可靠 不可靠传输,不使用流量控制和拥塞控制 可靠传输,使用流量控制和拥塞控制
连接对象个数 支持一对一,一对多,多对一,和多对多交互通信 只能是一对一通信
传输方式 面向报文 面向字节流
首部开销 首部开销小,仅8字节 首部最小20字节,最大60字节
适用场景 适用于实时应用(IP电话,视频会议,直播等) 适用于要求可靠传输的应用,如文件传输

3.答:TCP的可靠性依靠以下7种机制实现:
(1)校验和:检验范围包括TCP首部和数据部分,发送方将整个报文段以字(16位)为单位分开,并将所有段进行反码相加,结果存放在校验和字段中,接收方用同样的方法计算,若最终结果全为1则正确,否则存在错误。
(2)序列号:TCP对每个字节的数据都进行编号。序列号作用有:
a.保证数据不丢失
b.保证数据按序到达
c.提高效率,累计确认
d.去除重复数据
(3)确认应答机制(ACK):TCP首部有标志位ACK,当ACK=1时表示确认号有效。接收方对于按序到达的数据会进行确认,发送方如果收到已发送数据的确认报文,则继续传输下一部分数据,否则等待一段时间后启动重传机制。
(4)超时重传机制:当数据在发送后一定时间内未收到接收方的确认,发送方就会进行重传。报文段发出到收到应答中间有一个报文段的往返时间RTT,超时重传时间RTO会略大于RTT,TCP会根据网络情况动态计算RTT,因此RTO也是不断变化的,Liunx中RTO呈指数递增,重传一定次数后关闭连接。
(5)连接管理机制:即上面提到的三次握手和四次挥手。
(6)流量控制:根据接收端的处理能力,来决定发送端的发送速度。TCP报文段首部有一个16位的窗口大小字段,该字段大小随着传输情况而变化,如果缓冲区满,就将窗口置为0,发送方收到后就不在发送数据,但定期会发送一个窗口探测报文,使接收方把窗口大小告诉发送方。
(7)拥塞控制:为了防止过多数据注入网络中造成网络拥堵。主要有四种算法:慢开始、拥塞避免、快重传、快恢复。
a.慢开始和拥塞避免
发送方维护一个拥塞窗口cwnd,大小等于发送窗口,慢开始的思想是一开始发送方发送一个字节,在收到接收方的确认后,将拥塞窗口大小翻倍,直到拥塞窗口大小达到慢开始门限ssthresh,停止慢开始算法,采用拥塞避免算法,拥塞窗口由指数增长变为线性增长,当网络拥塞,发生超时重传时,慢开始门限变为当前拥塞窗口大小的一半,拥塞窗口大小置1,重新开始慢启动算法。
b.快重传和快恢复
当发送方收到3个连续的重复确认,可能不是拥塞而是报文丢失,发送方执行快重传算法,对相应报文立即重传而不是等待超时重传,同时执行快恢复算法,发送方将慢开始门限和拥塞窗口调整为当前拥塞窗口大小的一半,然后执行拥塞避免算法。

4.答:滑动窗口分为三类:停止等待、后退N帧、选择重传。滑动窗口保证了传输可靠,提高了传输效率和稳定性。

5.答:
磁盘调度算法:
(1)先来先服务算法(FCFS)
(2)最短寻道时间优先算法(SSTF)
(3)扫描算法(SCAN)电梯算法
(4)循环扫描算法(CSAN)

进程调度算法:
(1)先来先服务算法(FCFS)
(2)短作业优先调度算法(SJF)
(3)优先权调度算法(分非抢占和抢占式)
(4)高相应比优先调度算法
(5)时间片轮转法
(6)多级反馈队列调度算法

6.答:存放在磁盘上的文件,会以固定大小的页进行划分,在使用CPU处理磁盘文件时,只加载需要使用的数据,当需要的数据不在内存时,发出缺页信号,再从外存中把相应的页调入内存。

7.如上

8.答:LRU(最近最少使用)算法是一种页面置换算法。其实现可以使用HashMap结合双向链表的方法,把k值相同的节点用双向链表连接起来,当新节点加入时,放入表头,当节点被访问时,把该节点移动到表头,当需要选择删除节点时,直接删除表尾节点即可。

9.如上

【校招】面试_字节跳动_客户端开发工程师_一面相关推荐

  1. 【校招】面试_字节跳动_客户端开发工程师_二面

    1 面试信息 面试形式:视频面试 面试时间:2020-03-10 14:00:00GMT+08:00 面试时长:约半小时 面试职位:客户端开发工程师-产品研发和工程架构部 2 面试问题 1.A.B轮流 ...

  2. 【前端面试】字节跳动2019校招面经 - 前端开发岗(二)

    [前端面试]字节跳动2019校招面经 - 前端开发岗(二) 因为之前的一篇篇幅有限,太长了看着也不舒服,所以还是另起一篇吧? 一. jQuery和Vue的区别 jQuery 轻量级Javascript ...

  3. 字节跳动一面通过率_我去面试了字节跳动管理岗!

    上周三在脉脉上投了字节跳动内容质量中心管理岗,周四就收到了hr小姐姐的电话(不得不说字节跳动效率真高),核实了一些基本情况后问我何时方便面试,我把面试安排在了下周一. 和hr小姐姐的聊天结束后不久就收 ...

  4. 字节跳动Web前端开发校招一面凉经

    字节跳动Web前端开发校招一面凉经(一) 前端菜鸟一名,字节跳动不怎么卡学历,认真做笔试的基本上都有面试资格.本人双非学校,但是还是有面试.只怪自己太菜了.而且笔试自我感觉做得很差,以为自己凉凉了,结 ...

  5. 字节跳动python后端_【字节跳动】[字节跳动][实习]后端研发工程师(python+go)...

    职位:[字节跳动][实习]后端研发工程师(python+go)-字节跳动 [岗位职责] 一年的时间,我们已经发展成行业第二,并且今年业务的发展速度是大头条体系最快的,成功的业务造就成功的团队,成功的团 ...

  6. 9年前,字节跳动第一个安卓工程师是这样工作的

    从2012到2021,今天的字节跳动已经走过了9周年,员工人数也已经突破了10W. 不过,回想九年前的创业早期,整个公司只有十几个人,探索方向期间,创始团队一口气做了包括今日头条在内的12款App,但 ...

  7. 九章云极发布YLearn因果学习开源项目;字节跳动大量招聘芯片工程师;苹果被俄法院罚款约21.6万元 | 每日大事件...

    数据智能产业创新服务媒体 --聚焦数智 · 改变商业 01.九章云极DataCanvas公司开源发布YLearn因果学习开源项目 7月12日,九章云极DataCanvas公司发布YLearn因果学习开 ...

  8. 字节跳动测试开发4轮面试_字节跳动测试开发工程师一面总结

    公司简介: 字节跳动是全球发展速度最快的科技公司之一,公司旗下拥有今日头条.抖音.西瓜视频.懂车帝.Faceu激萌.轻颜相机.飞书.皮皮虾.TikTok等多款海内外产品,全系产品月活用户超过15亿.目 ...

  9. 面试字节跳动测试岗位一般问什么测试点_字节跳动校招流程详解(附带笔试真题+面经)...

    相信大家对字节跳动不会陌生,旗下有抖音.今日头条.西瓜视频等优质产品.它于7月20日开启校招,目前已经进入了尾声阶段,想要投递的同学一定不要错过了! 点击即可跳转--字节跳动校招官网 一.招聘对象 在 ...

最新文章

  1. linux inode详解
  2. python遇到Retry(total=4, connect=None, read=None, redirect=None, status=None)解决方案
  3. linux定时创建文件,linux下如何创建定时任务
  4. mysql判断域为空_MySQL EXPLAIN 字段说明
  5. 【C语言】第五章 迭代计算与循环结构 题解
  6. mysql无法添加或更新子行_MySQL无法添加或更新子行
  7. 第5章 简易毛笔字(《Python趣味创意编程》教学视频)
  8. Word把普通表格改为三线表格的方法
  9. SQLite数据库可视化工具【SQLiteStudio】的下载及安装
  10. 奔图 Pantum M6550 打印机驱动
  11. 电脑扬声器安装程序(UNKNOW)
  12. Mac下的平铺式桌面 - Yabai
  13. 计算机毕业优秀作品展观后感,毕业设计作品展观后感
  14. cell数据如何删除重复项
  15. !!!---1588|Sum of All Odd Length Subarrays(新)
  16. 怎么搭建一份好的产品宣传手册?方法来了
  17. docker status exited(255)
  18. Latex: 使 tabular 居中
  19. 半天搭建大数据伪分布式环境
  20. 简洁轻量的SVGA动效

热门文章

  1. VSS写入缓存失败的解决方法
  2. 商务酒店机房改造环控项目解决方案
  3. 计算机图纸学绘制钻石图案,CAD绘图技能实验(七)绘制钻模装配图
  4. 酷开系统,打造更多可能
  5. Google Earth Engine——GEE中无法实现的三个数据集此数据集提供了对热带地区高分辨率卫星监测的访问,主要目的是减少和扭转热带森林的损失,促进应对气候变化,保护生物多样性,促进森林再生
  6. c语言文件备份,C/C++实现文件的备份
  7. CLAHE中双线性插值理解
  8. ADG配置(主备库环境)
  9. 【材料-化学】专题合集:CP2k、gaussian、lammps、reaxff
  10. 灰狼算法(GWO)优化混合核极限学习机(HKELM)分类预测,多输入单输出模型,GWO-HKELM分类预测。