字节跳动 客户端实习生 已拿offer(C++)
三面技术+hr沟通。字节给我的面试体验非常良好,投简历之后马上就有hr和我联系。面试完当晚hr就会通知面试通过,商量一下下一次面试的时间。
我没有合适的项目经历,所以问的都是一些基础问题,主要范围差不多是操作系统、计算机网络、计算机组织与结构和部分数据结构算法。
感觉字节是一个很重视基础的公司,很多问题追问的特别深,下面写的问题可能只是后面追问问题的开始,还是得自己理解了相关知识比较好。强背不可取。
一面:
-
C++为什么是面向对象的程序设计语言
-
C++有哪些特性
-
解释一下多态
-
继承方式
-
为什么可以由子类对象new一个父类对象,反之不行
-
封装实现原理
-
TCP/UDP简述
-
为什么TCP是一个可靠的通信方式
-
为什么TCP可以保证顺序的传输,如果ACK丢失了,TCP进行怎样的修复操作
-
TCPIP网络层次模型简述
-
拥塞控制描述
-
进程与线程简述
-
进程切换时,会发生什么
-
进程的状态
-
虚拟内存解释
-
虚拟地址和内存地址的转换
-
计算机的存储结构
-
cache的用途
-
输入一个数组,返回其中能被3整除的元素。(主要是为了下面一题)
-
如果把3改成4,能不能有代码复用的方法(使用函数指针做)
-
给定N个有序的链表,合并他们(面试官示意结合堆排序增加效率)
二面:
-
代码文件到可执行程序的过程
-
可执行程序具体来说是什么
-
机器指令是完全由0/1组成的,那么机器怎么对这些0/1进行划分
-
虚拟内存简述
-
页置换简述
-
页在你的理解中究竟是什么。
-
主机A,主机B,分别有IP地址。请从ip层及以下的层面描述主机A怎么和主机B进行信息交互。
-
什么是cookie
-
互斥锁有了解吗
-
同步和异步是什么(不限范围,随便谈一下你对于这两个词的理解)
-
寄存器的作用
-
进程和线程
-
进程的各个状态
-
多核处理器的进程调度
-
练手题,回文字符串判断
-
给一组字符串和一个目标字符串,组里面的字符串可以被多次使用,判断能不能不重叠地组成目标字符串
三面:
-
介绍项目
-
字节对齐
-
内联函数介绍一下
-
内联函数体有没有什么要求
-
float == float,有无风险
-
多态与虚函数
-
虚函数咋实现的
-
父类指针指向子类对象,调用非虚函数,是子类的还是父类的
-
多线程是啥概念
-
互斥锁、自旋锁、读写锁
-
互斥锁和自旋锁,怎么选择
-
一个app,我想控制同时只能允许10个请求,怎么设计
-
TCP/UDP
-
当前我和你视频面试,用的啥协议
-
app向服务器发送一个请求,完整的过程
-
弱网条件下,怎么优化app的消息传输机制
-
拥塞控制,流量控制针对的分别是什么问题
-
设计模式有了解过吗(没有,悲)
-
有过其他的客户端开发实习经历吗(别说客户端了,我连实习都没有)
-
https为啥安全
-
对称加密和非对称加密
-
数字证书
-
练手题:树的层次遍历,额外要求输出一个层数
-
算法题:字符串变成float数字,要考虑到非法字符和溢出情况
hr:
很友善的小姐姐,问了一些和技术完全无关的问题,介绍了一些岗位状况,没什么压力的交流。
#字节跳动##实习##C++工程师##面经#