注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号 
x
码下面经
CE phd 方向computer architecture 面跪了intel
intel, jd---performance architecture 上网能收到具体需求
面试体验最差的一次,首先我是intel网上海投的,四天之后就安排的电面。
不是hr安排的,是他们组里一个比我毕业早5年的人,邮件还问我电话多少,一点也不专业。
电话面试问的基本问题就是架构的,但是非常tricky,我到现在都没有确定答案。
汇编+架构
Q: ADDUI R1, R2, R3 不考虑data harzard, R1如何renaming?
A: renaming to register file. (注意现在cpu大多用register file了)
Q: R2,R3如何renaming?
A: inorder CPU renaming to reservation station, out-of-order renaming to ROB. (tomasulo's algorithm)
这题我没答出来,因为出的比较tricky, 和老板讨论才知道是这个意思,原话扯了很多什么物理寄存器, free pointer什么的,搞得我不知道他要问什么。
Q: MESI protocol 里面的E是什么?
A:可以答很长,主要是解决了MSI里面的broadcast traffic问题。
Q:MOESI 里面的O是什么? 如果标记O 的cacheline被evict,如何transfer ownership?
A:通过transient state 把O transfer 给别的S state line. 可以详细说。
Q:inclusive和non-inclusive cache hierarchy区别是什么
A:incluision mainly use second level storage as victim cache while exclusive swap the cache line upon eviction.
the caches can be sized accordingly. inclusive has around 1/10 ration and exlcusive may have 1/5 ratio.
traffic profile is different.(然后这里他就把我打断了把我挂了....
Q:inclusive 的control traffic 比excluisve好哪里
A:他给我的答案是inclusive 因为maintain incluisvness, 所以可以知道above level cache在哪里,exclusive没有。
(此人很得意,然而AMD早就解决了这个问题了我也是无语,反正他是老大...
Apple performance architecture HR特别好 特别热心 我面挂了还帮我问了别的组
全组烙印,面试体验觉得我在浪费他们时间。并且他们不想招人。
电话迟到10分钟, 上来打电话就说:我是xx, 我在做ld/st queue的优化。你知道ld/st q是做什么的吗?
你怎么设计pipeline with branch predictor?
其它的问题我估计是dummy:
TLB是啥,page fault是啥
Nvidia 面的最正规的一个公司,全程hr牵线连头 所有phone call都准时到以秒计
面试官都是从业+编程 30y+的人 都很nice
唯一的问题是,感到亚历山大,试想你对面的人从OS到编译器玩到ARCH,c++, python, perl,好比孙悟空和如来佛的爪子。
Q:TLB是啥, page fault是啥
Q:branch predictor有哪几种
Q:miss prediction 如何处理的
A:squash/flush pipeline
Q: what is deadlock, deadloc result = mysol.listNodeDelete(result, 15);
mysol.printList(result);
cout <<"try again, delete n=0\n";
result = mysol.listNodeDelete(result, 0);
cout<< "final secondList content is\n";
mysol.printList(result);
cout << "maybe try a list with single node\n";
listNode* thirdList = new listNode(555);
cout <<"the thirdList is awesome ";
mysol.printList(thirdList);
cout <<"maybe not awsome after delete it\n";
mysol.printList(mysol.listNodeDelete(thirdList, 0));
return 0;
}
使用编译命令
g++ -Wall -o singlylinkedListDelete singlylinkedListDelete.cc -g -std=c++11
然后他还想问一个程序,说我现在要测试你的STL熟练程度,你知道vector吧,我告诉你我要让你.....
(沉默了一下) 给我一分钟....(好)
(高潮来了)我觉得我这个vector好像不好用,没有第二题了。(我晕)
然后又开始聊linux kernel聊了一堆,主要是memory page reclaiming那些。
补充内容 (2018-4-4 01:29):
如果你是面偏硬件的sde,c++几乎是必备知识,而且要知道很多,比如copy constructor什么时候call. 另外给代码一点建议, 1. well organized, 2. fully documented,包括具体算法。3. has to include testcase |