字节二面

1.自我介绍+小问项目
2.malloc和new:准备长篇大论,面试官打断我的长篇大论。
3.malloc的实现原理。
4.一个程序调用malloc,程序和操作系统视角有什么区别。
5.第一次调用malloc之后操作系统会立刻分配资源吗
6.c++对象父类子类和内存布局之间的关系
7.c++对象的内存模型
8.一个巨抽象的问题:什么时候不用虚函数表。问完我就笑着回答不用虚函数的时候不用虚函数表,回答完面试官也笑了。然后说他想问的是为什么需要虚函数表。
9.为什么子类对象的内存布局是先排列父类的成员变量,再排列子类的成员变量。我答了一个符合继承的逻辑,面试官引导:子类对象是否能强转为父类。然后我回答可以,然后说这样的内存布局便于对象指针的转换(好像答得不太好,直接下个问题了)。
10.经典输入url到显示网页的过程。
11.TCP握手、tls握手。长篇大论被打断。
12.TCP传输协议是否保证数据在任何环境的不丢失不重复。我说可以。面试官又问假如使用TCP下载了一段数据,在应用层看来是否有可能错误,我东扯西扯顾左右而言他。面试官承认这个问题有点困难。
13.git commit。我说先检查暂存区,然后git add将工作区提交到暂存区,说到这儿后面我不知道了,就扯工作区是什么,暂存区是什么。就快露馅了,面试官说了解了不用往下说了。
14.docker底层原理。说了个命名空间。
15.举个例子说明我是极客。(给我一件基础装备我能把他变成成装😋)
16.算法题:最长无重复字符子串。

经典四点五十五吃饭前给过了。
全部评论
我面字节的时候面试官也是在malloc和new、TCP和UDP这两个问题打断施法
2 回复 分享
发布于 04-02 13:06 甘肃
面的什么岗位啊
点赞 回复 分享
发布于 04-13 19:27 北京
校友还会玩铲,可以
点赞 回复 分享
发布于 04-02 00:17 广东

相关推荐

点赞 评论 收藏
分享
04-02 21:12
已编辑
门头沟学院 C++
1. 读写锁如何实现?2. 如何实现线程池?线程池里放了多个任务后,这些任务怎么分配到各线程的?3.哈希表的原理是什么?4.怎么实现对一个树结构进行广度优先遍历?5.栈内存和堆内存的区别?栈为什么分配速度快?它具体怎么分配?6.当使用new创建一个新的数组,它指针是虚拟地址还是物理地址?什么时候回真正映射到物理内存?7.https加密原理是怎么样的?8.如果有个假冒服务器,它也可以跟你握手吗?1. 读写锁是一种并发控制机制,允许多个线程同时读取共享资源,但写操作需要独占访问;初始化一个互斥锁(用于保护共享转态),初始化一个条件变量(用于阻塞等待的线程);读锁:如果没有写线程正在访问,允许读线程进入;写锁:如果没有读线程或写线程正在访问,允许写线程进入;解锁:读线程解锁时,介绍读取计数;写线程解锁时,通知等待的线程;2. 线程池,通过三个类实现,(1)线程类,用于控制线程的启动和停止,以及维护一个指向事件循环的指针;(2)程池类:用于管理线程,包括初始化线程数量,已经放置一个任务队列,每来一个事件就放到队列里,如果有空闲线程就唤醒去执行;(3)任务函数的接口类,写一个基类,自己通过子类来自定义函数;线程池收到任务后,会把任务放到共享的任务队列里面,每个线程会在循环里去拿任务,拿到任务时要加锁互斥,谁先拿到就执行。另外还可以考虑给任务添加优先级3. 通过哈希函数将将键值映射到数组索引,再用数组存储键值对。举例:像C++中的unorder_map,使用链地址法解决冲突,在哈希冲突时把多个元素放到同一个桶里链表中。当存储的元素跟数组大小的比值超过一定阈值,会进行自动扩容;4.  广度优先遍历就是对每一层进行遍历,用队列实现;先把根节点入队,出队时访问,然后把它的子节点按顺序入队,一直到队列为空;5. 栈由操作系统自动分配回收,存储函数的现参、局部变量、返回地址等;堆是通过new/delete或者malloc/free由程序自己分配释放,能分配更大的内存,但可能会出现内存碎片等问题;操作系统在底层对栈提供支持,会分配专门的寄存器存放栈的地址,另外它的入栈出栈操作也十分简单,并且由专门的指令执行,所以下来会很快;堆的操作是由C/C++函数库提供,在分配内存的时候需要一定的算法寻找合适大小的内存。并且获取堆的内容需要两次访问,第一次访问指针,第二次根据指针保存的地址访问内存,因此堆比较慢。6. 并不是物理内存,而是虚拟地址,后面需要通过页表和MMU(内存管理单元)来映射到物理内存;操作系统采用懒加载策略,只有在程序访问这块内存时,才会将虚拟内存页映射到物理内存。也就是说,程序触发缺页中断时,操作系统才会分配物理内存并更新页表来完成映射。7. 客户端会发送一个Client random + TLS版本号 + 支持的密码套件列表的信息给服务端,服务器回应一个Server random + 自己的数字证书;客户端通过证书认证机构(CA)来验证证书是否合法,确认服务器身份后,用服务器的公钥加密一个pre-master发回给服务器;服务器用私钥解密得到该数;后面的就使用这个生成的会话秘钥client random + Server random + pre-master进行对称加密传输;8. 如果是一个假冒服务器,它的证书没有权威CA的签名,或者证书域名不匹配,客户端会提示不信任,阻止连接。CA:是证书颁发机构,负责签发;证书:由CA颁发的电子文件,包含公钥、身份信息和CA的签名等;
点赞 评论 收藏
分享
评论
6
36
分享

创作者周榜

更多
牛客网
牛客企业服务