Momenta C++开发工程师 实习
update 最后给了offer,但是还是选择去头条实习了,毕竟离得比较近。。
-------
不记得什么时候,怎么投的momemta了,一直以为没有投。。上周突然收到面试邀请,他们公司说是有个简历池,对每个所有组公开。我投的是C 开发工程师的实习,有四个组约了我面试,19.00-21.15,但是被第一个面试官放了鸽子,所以面了三个组。
一面 b
先是自我介绍,然后聊了下项目,讲了我那个简易内核的进程线程实现、文件系统结构、怎么实现同步等等。然后考察了一下Linux里面线程的基本使用,感觉难度不大。问了一个怎么把线程绑定到指定的CPU,这个不清楚,后来查了下,linux里面可以用sched_setaffinity来搞定。再就是聊了下多人开发怎么协作,遇到了观点不一致的情况怎么解决等等。后面就是提问环节了。
他们组说是C 做L4无人车系统的。
一面 c
自我介绍,coding了三道题,都是邮件发过来的:
给一个32为整数,写一个reverse函数。reverse(-123) == -321这种。
Given an array of integers and an integer k, find out whether there are two distinct indices i and j in the array such that nums[i] = nums[j] and the absolute difference between i and j is at most k.
Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.
后面就是提问环节。
因为这几道题都比较简单,所以表现的有点自信,最后被面试官吐槽有点任性。。。
他们组也说是C 做L4无人车系统的,但是在苏州。
一面 d
这个面试官上来就介绍了他们的团队,然后主要是做高性能计算,和各种优化的,和体系结构打交道比较多。
主要是问了汇编还有体系结构的一些东西,还有简历上那个内核的线程、进程、内存管理等。
有没有了解过***,然后矩阵乘法***优化(就是CSAPP的那个*** lab)
问了汇编里面什么可以改变eip(说了call,jmp,ret等)
线程进程的区别,实现上差异
为什么有虚拟地址的存在(扯了下保护模式的作用)
为啥不能写个程序修改cr3寄存器,就是换掉页表
设计一个支持纠错的词典(同样字符,然后顺序不一样),然后分析复杂度
形如 ...10,8,6,4,2,1,3,5,7,9... 这样的数列,输入两个数字,判断他们之间下标的距离,考虑robust
最后交流了一下CSAPP的attack lab,怎么做攻击的,ROP具体是怎么回事等等

