百度c++暑期实习三面...
其实好像是叫c++/go/java研发暑期实习
连着123面..1面基础为主,二面简历为主,其他忘了..就记得一点三面
先问了问实验室项目
寄存器访问为啥比内存快?(答的访问路径不一样,还猜了是因为存储介质不一样,好像寄存器是要x个门电路,dram是要充电的。想不出来,面试官说如果让你设计你会用什么东西存储bit,我说d触发器,面试官给回复寄存器就是用的d触发器,dram通常是电容...)
介绍一下linux内存管理子系统(准备从pglist->mmzone->...一点点讲,后来..见下一问)
如果从模块上层接口和下层接口来看的话呢(不了解sbrk,所以讲了上层应该提供类似malloc、free类似接口,下层应该管理页表、物理页等信息)
malloc应该提供什么粒度的分配接口呢(我认为malloc应该提供统一粒度的接口,但可以定一个上限)
你应该听说过内存碎片问题,如果使用者malloc不同的size,有些可能比page大,有些比page小的多,这种情况要怎么处理(问的大概是这个意思,有点记不清了,回答的linux buddy allocator + slab)
操作系统怎么知道内存初始大小(当时回答的bios数据区有个字段可以给出大小,后来发现记岔了...bios数据区的只能给出1m以下的,应该用0x15号bios中断获取内存大小...)
你觉得什么时候用进程,什么时候用线程比较合适(线程共享数据比较方便,进程共享数据相对不那么方便,如果是需要频繁访问共享数据的话,用线程比较好。进程方面举了数据库备份的例子,用线程需要加锁,还不是快照数据,用进程可以借助linuxcow机制,更方便)
你应该知道共享内存,如果让你实现一个共享内存要怎么做(因为了解过一点linux的,就回答了linux的mmap,在进程虚拟地址空间根据mmap是映射匿名页还是文件页产生一个对应的vm_area_struct,随后关于物理页的处理交给page fault)
程序编译链接过程(预处理,编译,优化不知道在哪,汇编,链接)
链接过程做了什么(相似访问权限section合并为segment,确定符号地址,地址重定向)
设计模式你了解过吗(看过一点design patterns in modern c++,webserver里用过单例和builder模式,其他的仅了解,没用过)
或者这么说,你觉得linux哪些设计很妙(hal,举了个页表的例子,体系结构无关代码看到的都是四级页表,体系结构相关代码负责各级页表访问的具体实现,还想讲一点linux module..后来面试官换下一个问题了)
..其他的忘了,好像
反问:
实习转正机会
实习生一般负责做什么
项目中一般用哪些中间件
#面试那些事##百度##实习#
连着123面..1面基础为主,二面简历为主,其他忘了..就记得一点三面
先问了问实验室项目
寄存器访问为啥比内存快?(答的访问路径不一样,还猜了是因为存储介质不一样,好像寄存器是要x个门电路,dram是要充电的。想不出来,面试官说如果让你设计你会用什么东西存储bit,我说d触发器,面试官给回复寄存器就是用的d触发器,dram通常是电容...)
介绍一下linux内存管理子系统(准备从pglist->mmzone->...一点点讲,后来..见下一问)
如果从模块上层接口和下层接口来看的话呢(不了解sbrk,所以讲了上层应该提供类似malloc、free类似接口,下层应该管理页表、物理页等信息)
malloc应该提供什么粒度的分配接口呢(我认为malloc应该提供统一粒度的接口,但可以定一个上限)
你应该听说过内存碎片问题,如果使用者malloc不同的size,有些可能比page大,有些比page小的多,这种情况要怎么处理(问的大概是这个意思,有点记不清了,回答的linux buddy allocator + slab)
操作系统怎么知道内存初始大小(当时回答的bios数据区有个字段可以给出大小,后来发现记岔了...bios数据区的只能给出1m以下的,应该用0x15号bios中断获取内存大小...)
你觉得什么时候用进程,什么时候用线程比较合适(线程共享数据比较方便,进程共享数据相对不那么方便,如果是需要频繁访问共享数据的话,用线程比较好。进程方面举了数据库备份的例子,用线程需要加锁,还不是快照数据,用进程可以借助linuxcow机制,更方便)
你应该知道共享内存,如果让你实现一个共享内存要怎么做(因为了解过一点linux的,就回答了linux的mmap,在进程虚拟地址空间根据mmap是映射匿名页还是文件页产生一个对应的vm_area_struct,随后关于物理页的处理交给page fault)
程序编译链接过程(预处理,编译,优化不知道在哪,汇编,链接)
链接过程做了什么(相似访问权限section合并为segment,确定符号地址,地址重定向)
设计模式你了解过吗(看过一点design patterns in modern c++,webserver里用过单例和builder模式,其他的仅了解,没用过)
或者这么说,你觉得linux哪些设计很妙(hal,举了个页表的例子,体系结构无关代码看到的都是四级页表,体系结构相关代码负责各级页表访问的具体实现,还想讲一点linux module..后来面试官换下一个问题了)
..其他的忘了,好像
反问:
实习转正机会
实习生一般负责做什么
项目中一般用哪些中间件
#面试那些事##百度##实习#