IBM中國編譯器團隊電面總結(jié)

燕子去了廓奕,有再來的時候抱婉;楊柳枯了,有再青的時候桌粉;桃花謝了蒸绩,有再開的時 候。但是铃肯,聰明的患亿,你告訴我,我們的日子為什么一去不復(fù)返呢押逼?——是有人偷了他 們罷:那是誰步藕?又藏在何處呢?是他們自己逃走了罷——如今又到了哪里呢挑格?

不知不覺, 我們已經(jīng)面臨畢業(yè)的時候.
此時, 總是尷尬的. 以前總有畢業(yè)遙遙無期的想法, 但是未來的迷茫, 面臨的選擇猛然向自己撲來時, 不禁驚訝時間的流逝.

life is short
life is long
孔子認為life is float,因為

逝者如斯夫咙冗!不舍晝夜 by ZhiHu

面試公司: IBM中國編譯器團隊
(我用他的電話號碼人肉了一下)
面試人: 張青山 畢業(yè)于福州大學(xué)計算機系。從事嵌入式開發(fā)多年漂彤,曾致力于Linux內(nèi)核和芯片驅(qū)動程序的開發(fā)雾消、及上層應(yīng)用程序的編寫灾搏。2010年加入IBM XL編譯器中國開發(fā)團隊,負責(zé)XL C++編譯器前端的研發(fā)工作仪或。對C99确镊、C++98、C++11等語言標(biāo)準(zhǔn)及編譯理論有深入理解范删,并實際參與C++11前端各種特性的實現(xiàn)蕾域。此外還致力于編譯器兼容性的研究和開發(fā)。

你知道Tr代表的是什么嗎?

我看過, 但是忘了...

C++ Technical Report 1 (TR1)(英文)是ISO/IEC TR 19768, C++ Library Extensions(函式庫擴充)的一般名稱到旦。TR1是一份文件旨巷,內(nèi)容提出了對C++標(biāo)準(zhǔn)函式庫的追加項目。這些追加項目包括了正則表達式添忘、智能指針采呐、哈希表、隨機數(shù)生成器等搁骑。TR1自己並非標(biāo)準(zhǔn)斧吐,他是一份草稿文件。然而他所提出的項目大多數(shù)已成為下次的官方標(biāo)準(zhǔn)(C++11)的一部分仲器。這份文件的目標(biāo)在於「為擴充的C++標(biāo)準(zhǔn)函式庫建立更為廣泛的現(xiàn)成實作品」煤率。
Filesystem Library [9] – Based on the Boost Filesystem Library, for query/manipulation of paths, files and directories.

你在編程時遇到最大的困難是什么?

Linux的動態(tài)加載庫是怎么用的?

我只是用過windows下的動態(tài)加載庫(dll), 便由此推斷出Linux的也是這樣用, 便問你有提供外部接口給我嗎
他問, 你知道怎么樣獲得外部接口嗎.
我當(dāng)然一臉懵逼了

nm -D mylib.so
列出所有導(dǎo)出的函數(shù),包括mylib.so靜態(tài)鏈接的庫中的那些導(dǎo)出函數(shù)乏冀。

查看符號表: objdump -t xxx.so 
-T 和 -t 選項在于 -T 只能查看動態(tài)符號蝶糯,如庫導(dǎo)出的函數(shù)和引用其他庫的函數(shù),而 -t 可以查看所有的符號,包括數(shù)據(jù)段的符號

extern int add (int a, int b) { return a+b; } 
extern int minus (int a, int b) { return a-b; }
static int small_minus (int a, int b) { return a-b; }
extern int used_minus (int a, int b) { return small_minus(a, b); }
extern int divide (int a, int b) { int c = a/b; return c; }

? nm  target.so
0000000000000f00 T _add
0000000000000f80 T _divide
0000000000000f20 T _minus
0000000000000f60 t _small_minus
0000000000000f40 T _used_minus
                 U dyld_stub_binder
                 
? gobjdump -t target.so
target.so:     文件格式 mach-o-x86-64
SYMBOL TABLE:
0000000000000f60 l       0e SECT   01 0000 [.text] _small_minus
0000000000000f00 g       0f SECT   01 0000 [.text] _add
0000000000000f80 g       0f SECT   01 0000 [.text] _divide
0000000000000f20 g       0f SECT   01 0000 [.text] _minus
0000000000000f40 g       0f SECT   01 0000 [.text] _used_minus
0000000000000000 g       01 UND    00 0100 dyld_stub_binder

也就是說, 你只是用的多, 并沒有真正自己完成一個大項目.
全局變量int a = foo() 到底發(fā)生了什么?

我知道int a = 3是在main函數(shù)執(zhí)行前賦值, 也知道 main不是入口函數(shù), 入口函數(shù)另有其人

整個程序的入口點是crt1.o中提 供的_start,它首先做一些初始化工作(以下稱為啟動例程,Startup Routine),然后調(diào)用C代 碼中提供的main函數(shù)。所以,以前我們說main函數(shù)是程序的入口點其實不準(zhǔn)確,_start才是真正的入口點,而main函數(shù)是被_start調(diào)用的眯亦。?


但是呢, 我剛剛測試了一下, 好像并不能用foo()函數(shù)賦值, 因為foo函數(shù)并不能在編譯時確定
error: initializer element is not a compile-time constant
是我被坑了嗎? 還是聽錯了呢...我普通話不好, 不要打我.

你知道C++現(xiàn)在最新的標(biāo)準(zhǔn)是什么嗎? 列舉幾個特性

最新的標(biāo)準(zhǔn)是C++11, 好像C++13正在討論中. 有auto類型, lambda表達式
(但是事實是, C++11/C++14/C++17都有了...)

你知道auto是auto a = 4, 怎么實現(xiàn)的嗎?

我不知道..就用auto是自動推導(dǎo)類型蒙過去了

你知道變長模板嗎?

不知道:( 大學(xué)我基本都在用C, php, C++大致只停留在高中水平了.

一個模板形參包(template parameter pack)是一個接受零個或多個模板實參的模板形參《什纾【例:

template<class ... Types> struct Tuple { };
 
Tuple<> t0;    // Types不含任何實參
Tuple<int> t1;    // Types含有一個實參:int
Tuple<int, float> t2;    // Types含有兩個實參:int和float
Tuple<0> error;    // 錯誤:0不是一個類型

如何用C實現(xiàn)C++的面向?qū)ο?/p>

這個雖然我沒有做過, 但是在做Wine contribution的時候, 大致看到這樣的做法.
用Struct把數(shù)據(jù)封裝, 成員函數(shù)就多加一個顯式的this參數(shù), 用結(jié)構(gòu)體的地址傳進去.
他說, 這樣只是外部函數(shù), 還不是成員函數(shù), 是不是.
我想了一下, 在wine里都是上面那種來實現(xiàn)的, 還可以怎么樣呢(⊙o⊙)
馬上就想到了, 在結(jié)構(gòu)體里, 多加一個函數(shù)指針成員, 然后再把成員函數(shù)地址賦值給函數(shù)指針成員.
他說是這樣, 你知道這樣做跟C++比較有什么缺點嗎?
我只是想到了需要顯式調(diào)用構(gòu)造與析構(gòu)函數(shù), 以及傳入this指針.
想不到?jīng)]有了C++里的private, public, protect權(quán)限了

總結(jié)就是用的多, 但是對basic knowledge不理解.

我只有最后一個問題是答得好的...那個問題還是最后他說, 你還有什么想問嗎
我說你再問一個C語言的問題吧.........

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市鹃彻,隨后出現(xiàn)的幾起案子郊闯,更是在濱河造成了極大的恐慌,老刑警劉巖蛛株,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件团赁,死亡現(xiàn)場離奇詭異,居然都是意外死亡谨履,警方通過查閱死者的電腦和手機欢摄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來笋粟,“玉大人怀挠,你說我怎么就攤上這事析蝴。” “怎么了绿淋?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵闷畸,是天一觀的道長。 經(jīng)常有香客問我吞滞,道長佑菩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任裁赠,我火速辦了婚禮殿漠,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘佩捞。我一直安慰自己绞幌,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布一忱。 她就那樣靜靜地躺著莲蜘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪帘营。 梳的紋絲不亂的頭發(fā)上菇夸,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天,我揣著相機與錄音仪吧,去河邊找鬼。 笑死鞠眉,一個胖子當(dāng)著我的面吹牛薯鼠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播械蹋,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼出皇,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了哗戈?” 一聲冷哼從身側(cè)響起郊艘,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎唯咬,沒想到半個月后纱注,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡胆胰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年狞贱,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜀涨。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡瞎嬉,死狀恐怖蝎毡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情氧枣,我是刑警寧澤沐兵,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站便监,受9級特大地震影響扎谎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜茬贵,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一簿透、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧解藻,春花似錦老充、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至胶背,卻和暖如春巷嚣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背钳吟。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工廷粒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人红且。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓坝茎,卻偏偏與公主長得像,于是被迫代替她去往敵國和親暇番。 傳聞我的和親對象是個殘疾皇子嗤放,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內(nèi)容