📍面试公司:字节跳动🕐面试时间:9.8-9.18💻面试岗位:生活服务 抖音团购 客户端开发❓面试问题:🙌面试感想:一面65min:1.算法题:2个有序数组,得到它们的中位数2.时空复杂度都是O(N),空间复杂度如何优化到O(1)? index计数,边界处理3.讲一下项目经历和实习经历4.讲一下什么是DNS5.讲一下for-tencent做了什么? 项目背景?6.改造升级fstack,如何保证稳定可监控?7.数据流是怎么样的? 性能优化的目标是怎么定的? 成本降低多少? 服务容量? 线上水位?8.成本降低为一半是怎么定的? 有什么科学的计算方法? 还是看上面的预算?9.性能优化调研的过程,为什么用dpdk/fstack?10.C/C++的区别?11.多态的实现原理?12.virtual具体咋用的? 底层原理? 虚函数指针是什么?虚函数表存在类里还是对象里?13.多态调用查找的过程? 如何保证重写过后的调用,是调用的重写后的函数而不是父类的?14.父类子类的虚函数表是一个吗?15.如果父类有多个虚函数,但是子类只重写了某一个,子类如何调用没有重写的函数的?16.子类重写了虚函数后,如何调用基类的那个函数? 命名空间显示调用17.命名空间的底层原理是什么? 编译期间做的还是运行期间?18.智能指针讲一下? 引用计数是什么? 循环引用是什么?19.引用计数++或--是什么时候触发? 赋值? 拷贝构造? 赋值运算符重载? 底层的资源指针赋值和计数详细讲一下?20.讲一下中断,硬中断,软中断,同步异步? 硬件触发 错误触发 软件触发21.缺页中断详细讲一下? 什么时候触发的?22.物理内存不连续,外碎片怎么处理的? 伙伴系统?23.进程和线程的区别?24.进程间通信的方式: 共享内存attach,管道25.讲一下管道的接口pip,文件描述符,底层的数据结构是什么?26.如何保证多进程数据安全:锁,信号量27. 互斥锁 VS 读写锁?28. tcp VS udp29. 拥塞控制讲一下,什么情况触发拥塞? 拥塞触发后如何增长?30.IO多路复用是什么? 什么场景用?31.多路复用高效在哪? ET和LT,底层的数据结构了解吗?32.反问a.团队的组织架构? 团队的定位? 生活服务下面的,客户端开发方向b.具体的业务:抖音团购,首页和二级页面c.技术栈:ios开发主要是用的objective-c,然后安卓的话用的是扣子里或者java啊。字节 生活服务二面 60min1.自我介绍2.了解客户端吗? 讲一下对客户端的理解?3.讲一下tcmalloc高并发内存池的结构,使用场景?4.threadCache结构重点讲一下? 内存对齐的规则? 这个规则是应用层的还是说和cpu,系统,底层硬件设备有关联?5.场景题:mysql中有一个用户表,有几个key(userId,订单ID,订单数量,订单状态,订单时间)目前想查一下该用户近30天的已支付的订单列表并且倒序去排,怎么做?6.聚合索引的原理? 选哪几个key来聚合?7.TCP为什么3次握手,不是2次或者4次? 全连接队列和半连接队列?8.http VS https? 对称密钥和非对称的区别?9.用过什么抓包工具? tcpdump抓到的是二进制吗? 除了数据还有什么内容? -n -w -x?10.portobuf的压缩规则? 对比xml/json的优势和劣势? 压缩成二进制的好处,存储&&传输&&丢包11.vector VS list12.几十万个数据,如何找到最大的100个? 为什么用小堆?13.单cpu多线程,任务如何执行的? 串行还是并行? 并行和并发的区别?调度策略? 上下文切换? 本质是切换执行空间 VS 切换执行顺序<br>cpu密集型 VS IO密集型14.常见的设计模式? 单例模式如何保证全局只有一个对象?15.二叉树的之字形遍历字节 生活服务三面 60min1.自我介绍**2.防火墙,** 你做的主要是那一侧的东西? 哪个层面上的?3.ddos攻击是什么? 如何预防? 事前事中事后?4.现代防火墙自动拦截功能,怎么样一个实现思路?拒绝单ip高并发,流量限速,CDN吸收和分散流量,监控报警5.tcp报文讲讲?6.mtu是啥? 一般设置为多大? 1500? 二三四层结合着讲讲,ip切片?7.网络层ip有sip和dip,假如我是一个客户端,去连接你的服务器,我的这个ip地址可以伪造吗?8.伪造之后能发出去,但是回包回不过来了?9.做tcp的中间人攻击,我该怎么攻击?10.做tcp层面上的负载均衡器怎么做? 这种中继器怎么做?11.高并发内存池,高并发指的是什么? 底层的内存分配器结构? slot结构?12.for-tencent对比传统递归解析? 它的优势是啥? 安全? 效率?13.一个域名对应的ip有很多,怎么返回的? 代码里面的算法逻辑是啥样的? 权重? 外围集群咋设计的,就近接入,动态路由?14.单机的dns系统如何做高可用和高容错的?15.设计一套端到端的机制,来确保整个httpdns服务正常运行,需要很多数据,埋点设计需要哪些?这是一个开放问题,你可以从整体到单机都讲讲16.vmstat命令? 监控的内存信息有哪些? 里面的cache干啥的?17.进程间通信的方式? 管道的底层原理? 怎么实现的?18.内存对齐讲一下?19.虚函数可以是virtual的吗? 虚表指针存在对象的哪个位置?20.智能指针有哪些? 循环引用?21.手撕:搜索旋转排序数组