字节跳动 Rust/C++研发实习生 面经
一面: 1h
0.自我介绍
1.算法题 n个有序数组合并为1个有序数组 问思路(一开始想的暴力法,后面在提示下联想到归并排序 O(nlogn))
2.算法实现 写了大概二十多分钟 写的特别复杂 感觉还是太紧张了
3.fn Fn FnMut FnOnce 的区别
4. Send Sync ?Size分别解释
5. 了解什么智能指针?
6. 程序有哪些section,由什么组成?程序启动的过程?怎么判断数据分配在栈上还是分配在堆上?
7.虚拟地址到物理地址怎么映射的? (讲了 页 段,但是忘了讲tlb和缺页中断了)
8.32位的系统能访问4gb以上的内存吗(我答的不能 面试官说可以去查一下最新的Linux 【intel新的x86硬件PAE支持36寻址空间,但是多出来的部分是虚拟的地址空间,单个应用程序估计无法使用到超过4GB的空间(32为系统的最大int是4GB),只能是多个进程合起来能够使用到4G以外的内存】PAE!!!)
9. 一个名为order的数据库,有date 和name字段,要查 date 、name以及name=?&&?<date<? 怎么建索引? (我讲了联合索引,其实自己不懂联合索引,所以后面追问的答不出了。。。好像问了最左匹配)
10.tcp慢启动过程
11.重传机制(超时重传 快重传)
12.tcp拥塞控制算法(讲了传统的 面试官说 还有呢? 我:不知道了 面试官:拥塞控制有很多种,例如最新的quick [面试完我去查了下quick 仍然用的是Cubic拥塞控制算法呀。。。])
13.浏览器访问url的过程(从osi七层模型往下讲)
14.协程和线程的区别?golang协程模型?什么时候用协程 什么时候用线程?rust为什么没有协程?(关于rust为什么没有协程 我感觉我答错了 其实rust的异步库实现的就是类似协程的东西。。但是太紧张 忘记了)【协程本质就是task,而且在用户态。应该讲一下用户态和内核态的关系的。】
15.还有什么要问的 (问了怎么学习rust 面试官:多做项目)
没录音 好像漏了些题
感觉要凉 别凉!!
#实习##面经##字节跳动##C++工程师#