中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

IBM中國(guó)編譯器團(tuán)隊(duì)電面總結(jié)

2018-07-20    來(lái)源:編程學(xué)習(xí)網(wǎng)

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬(wàn)Linux鏡像隨意使用


燕子去了,有再來(lái)的時(shí)候;楊柳枯了,有再青的時(shí)候;桃花謝了,有再開(kāi)的時(shí) 候。但是,聰明的,你告訴我,我們的日子為什么一去不復(fù)返呢?——是有人偷了他 們罷:那是誰(shuí)?又藏在何處呢?是他們自己逃走了罷——如今又到了哪里呢?

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

life isshort
life islong
孔子認(rèn)為life isfloat,因?yàn)?/span>

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

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

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

我看過(guò), 但是忘了...

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

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

Linux的動(dòng)態(tài)加載庫(kù)是怎么用的?

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

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

查看符號(hào)表: objdump -t xxx.so 
-T 和 -t 選項(xiàng)在于 -T 只能查看動(dòng)態(tài)符號(hào),如庫(kù)導(dǎo)出的函數(shù)和引用其他庫(kù)的函數(shù),而 -t 可以查看所有的符號(hào),包括數(shù)據(jù)段的符號(hào) 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

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

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

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


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

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

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

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

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

你知道變長(zhǎng)模板嗎?

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

一個(gè)模板形參包(template parameter pack)是一個(gè)接受零個(gè)或多個(gè)模板實(shí)參的模板形參!纠 template<class ... Types> struct Tuple { };

Tuple<> t0; // Types不含任何實(shí)參 Tuple<int> t1; // Types含有一個(gè)實(shí)參:int Tuple<int, float> t2; // Types含有兩個(gè)實(shí)參:int和float Tuple<0> error; // 錯(cuò)誤:0不是一個(gè)類(lèi)型

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

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

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

我只有最后一個(gè)問(wèn)題是答得好的...那個(gè)問(wèn)題還是最后他說(shuō), 你還有什么想問(wèn)嗎
我說(shuō)你再問(wèn)一個(gè)C語(yǔ)言的問(wèn)題吧.........


文/YongHao(簡(jiǎn)書(shū)作者)
原文鏈接:http://www.jianshu.com/p/f759f78b659b

標(biāo)簽: linux 權(quán)限

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:Python開(kāi)發(fā)的10個(gè)小貼士

下一篇:Git/GitHub學(xué)習(xí)第一天