字节二面面经8.9
(操作系统不太会,答得不一定对)
printf(“%p”, &a) 输出的是物理地址还是虚拟地址?-不确定(答虚拟地址)
引入虚拟地址的目的是?-不用直接操作内存磁盘怎么读到内存 -页表找内存,如果没在,页面调度
虚拟地址如何映射为物理地址?-xxx(忘了)+偏移量
用了什么 样的分页机制-多级
为什么要引入多级-提高映射速度/节约内存
进程间通信有哪些方式?
管道、消息队列、共享内存、 信号、信号量、socket
共享内存为什么最快-直接读写内存,只需要一次拷贝
别的不用拷贝吗?-管道要(别的不知道)
kill -9
发这个信号背后发生了什么事情-不会
还有什么信号可以让他终止-taskkill
为什么这些信号可以终止-内核写好的
mysql innodb引擎?支持事务?-支持
事务的持久性是如何实现?-reduolog去实现的
写数据库前先写redolog,之后再落盘
不能直接写磁盘吗-边写边落盘,比边写边redolog再落盘慢
为什么呢?-硬件所决定的
直接写数据页的缓存,再异步得刷在磁盘上,跟redolog有什么区别
那跟我我先写缓存再写磁盘有什么区别
为什么要写redo log?-只答了执行效率
智力题:
我现在有100个袋子,每个袋子里面有100个豆子,然后。这100个袋子里边,其中有一个袋子,他的豆子全是坏的,它的重量是零,每一颗豆子重量都是零,然后剩下的99个袋子里边的100个豆子都是好豆子,每个豆子质量是1。你现在有权利从任何一个袋子当中取出任何个数的豆子,你有什么办法,可以在一个秤上面,只称一次,就找出哪一个袋子里面是坏豆子。
循环有序反转数组找target-leecode原题
32, 43, 51, 62, 79, 82, 91, 0, 12, 21
51
多个id,取数量为前k大的id- topn问题 hash分组,再hash求数量再小根堆求前k大
12321411121,
12312412131,
12312312121,
...
堆插入的时间复杂度-不知道(盲猜nlogn)