字节提前批 二面

字节 后端-基础架构Data 二面 8.3晚 大约70min

一、自我介绍
  • 为啥之前本科没有实习经历?
  • 什么时候毕业?
  • 本科学习哪些专业课程?
  • C++大一学了之后还用过吗?
  • 因为是物联网专业,问有什么硬件知识储备?
  • 了解过指令集吗?
    • 回答了一条指令执行的过程,说了一下本科计组课设用过verilog实现过单周期CPU和五级流水CPU的仿真,主要实现了MIPS指令集,详细举例了ADD指令和LOAD指令的实现过程。(一个逻辑运算指令和内存I/O指令,其实忘了再距离跳转指令,如JUMP指令,这样回答更好一些,这些都是现场回忆大二做的课设,觉得能讲清楚就已经很好了,面试官也听懂了个大概)
  • 说一下Cache的原理,为啥要Cache?
    • 先回答了内存和cpu之间为啥要cache,说缓存是一种工程思想,其他很多地方都用到了;
二、项目(前面自我介绍,专业背景提问大概12分钟)
  • 介绍一下做的聊天集群项目
  • 可能介绍的比较流畅,面试官问是自己做的项目吗?
    • 很实在地回答了是网上开源的项目,然后我赶紧补充了这个项目我的收获(事后觉得自己有点真诚过了头)。
  • 用到了Nginx,说一下起到了什么效果?
  • 项目代码量多少?主要是C++吗?
  • 接下来介绍RPC框架项目
    • 说了一下rpc原理,然后就是各个模块怎么实现(回答不是太好)
  • 序列化自己实现要注意什么?
    • 参照之前用过的json,protobuf怎么实现序列化的,怎么分字段给用户读到具体的消息内容,怎么存储消息,然后举例了json字符流存储多余的字段名和protobuf的二进制字节流怎么消息分界,当时知道什么说什么,这个答得不好。

三、操作系统
  • 多线程和高并发场景需要考虑啥问题?
    • 往cup密集型和I/O密集型业务讲了业务需要区分,然后区别处理;
    • 面试官的意思是侧重多线程怎么同步,然后再具体问了多线程访问共享资源注意什么?
      • 共享资源,怎么互斥,我回答加锁;
  • 你知道多少锁?
    • 回答了自旋锁,信号量、条件信号实现的原理以及PV操作过程。
  • 说说信号量怎么实现的?
    • 从信号量记录共享资源数量,阻塞队列入手说了一大堆。
  • 说一说你如何理解操作系统?(代码题写完大概50min,后面又开始提问)
    • 从cpu管理、内存管理、文件管理、设备管理大概说了说。
  • 说一下进程的调度,哪些调度算法?
    • 从pcb开始回答,里面存着什么信息,进程如何组织管理(PCB队列),再回答了哪些调度算法。
  • 说一下进程切换?
    • 说了通过内核管理PCB,讲了切换的几种场景(阻塞发生,时间片到)
  • 内核你是怎么理解的?
    • 从OS从单程序到多道程序说为啥出现内核,然后再说了虚拟内存高地址是内核空间(内核程序也需要分配内存来存放指令和数据)
    • 进程的控制和进程间通信需要借助内核。
  • OS以前怎么学的,有什么实验课?
    • 实验课实现过一些shell命令,内存分页管理

四、代码(前面聊了不到半小时开始做题)
LC622 设计实现循环队列
  • 说一下思路,队尾指针和队头指针的作用?
  • 判断队列满为啥尾指针要加1?
    • LC没刷到过,凭借大二数据结构实现自己实现过循环队列回忆起来的,没说到关键点上。其实就是区分队列空和队列满两种情况不能以front==rear来判断(两种情况这个条件都满足)。

五、反问
  • 你们用C++具体用来开发什么业务?
    • 面试官说了很多,基础架构和硬件打交道多一点所以还有用C语言的,你排斥硬件吗?
      • 我继续说之前本科物联网专业的,学过需要硬件相关的课程,嵌入式、微机原理啥的,实验室项目做过的ROS小车集群,加的模块也是先从硬件到软件实现(舵机控制板、还有需要烧写程序的板子),所以不会抵触硬件。
  • 评价一下我今天面试的表现?(三面我不再问这个问题了,一定!)
    • 知识面很宽,会的还挺多,问题很坦诚(聊天项目直接说是网上开源的),总体回答都还行。

最后总结:
  • 项目准备不够充分(RPC项目),完全是围绕项目提问聊天,操作系统问的很多,但不是八股那种问法,全是开放性问题,尽量是知道啥就说啥(小林coding YYDS);
  • 感谢本科的课程实验,能在关键时候救命(完全靠回忆还能吹出来)

二面完觉得要凉了,面完晚上九点多;第二天傍晚收到三面通知(8.18,好晚啊!!!)。

#C/C++##后端开发##字节跳动##提前批##秋招#
全部评论
三面过了吗?
1 回复 分享
发布于 2022-08-23 10:47 四川
大佬
点赞 回复 分享
发布于 2022-08-28 15:09 江苏
我7.28面完一面两天后约二面约到8.16😂,你这还不算晚
点赞 回复 分享
发布于 2022-08-08 02:34

相关推荐

2025-12-24 15:25
已编辑
门头沟学院 前端工程师
是腾讯的csig腾讯云,前天晚上九点突然打电话约面,激动的通宵学了一晚上,第二天状态很差改了今天(以后再也不通宵学习了)感觉自己浪费了面试官一个半小时单纯手写+场景,无八股无项目无算法,打击真的很大,全是在面试官提醒的情况下完成的,自己技术方面真的还是有待提高,实力匹配不上大厂和已经面试的两个公司完全不一样,很注重编码能力和解决问题的能力,然而我这两个方面都很薄弱,面试官人很好很耐心的等我写完题目,遇到瓶颈也会提醒我,写不出题也会很耐心的跟我讲解好感动,到最后面试结束还安慰我打算把下周最后一场面试面完之后就不面啦,如果能去实习还是很开心,但是最重要的还是好好努力提高技术以下是面经第一题// 实现一个解析 url 参数的函数function parseUrl(urlStr) {// TODO}parseUrl('*********************************************');// 返回 {a: 1, b: 2, c: 3}追问:在链接里见过什么部分?用 hash 路由的话放在哪第二题// 考虑有一个异步任务要执行,返回 Promise,这个任务可能会失败,请实现 retry 方法,返回新方法,可以在失败后自动重试指定的次数。/*** 异步任务重试* @param task 要执行的异步任务* @param times 需要重试的次数,默认为 3 次*/function retry(task, times = 3) {// TODO: 请实现}// ---------------测试示例 ----------------// 原方法const request = async (data) => {// 模拟失败if (Math.random() < 0.7) {throw new Error('request failed');}const res = await fetch('https://jsonplaceholder.typicode.com/posts', {method: 'POST',body: JSON.stringify(data),});return res.json();}// 新的方法const requestWithRetry = retry(request);// 使用async function run() {const res = await requestWithRetry({ body: 'content' });console.log(res);}run();第三题就是给 retry 函数添加类型注释,用到泛型第四题:在组件库中将 Alert 用 api 的形式实现(应该就是 message 这个组件)怎么渲染到一个浮层里而不是原地渲染出来
不知道怎么取名字_:技术这个东西,太杂了,而且要下功夫的
查看5道真题和解析
点赞 评论 收藏
分享
01-15 19:59
中山大学 C++
牛客60887332...:你这是人写出来的? 本科标到硕士后面 留那么多空给 hr 填?
点赞 评论 收藏
分享
评论
2
22
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务