源自於對於駭客精神的崇拜之情,對這家公司格外尊重。雖待遇不是很高,但想必在那裡真正能感受程式員的樂趣。
正是由於看了這家公司筆試試卷之後,俺才將之前寫過的筆經中提到的公司名字抹去的。(ps:俺分享筆經也是體現了一點駭客精神滴~~)。試卷上首頁標註了:商業機密;試卷最後小提醒中說不要傳播筆試題目的。 俺想今天的記錄只是把自己不會的或者模糊的知識點列舉出來,方便自己技術的提高~~ 比重較小,也基本不會提到完整的題目本身。謝謝!
1.字元裝置與塊裝置瞭解
2.多線同步的方法
3.進程通訊的方法
4.函數指標、指標數組、數組指標的聲明
5.瞭解Cloud服務的三種模式:Sass,Pass,Iass.
Software as a Service,軟體即服務,簡稱SaaS,這層的作用是將應用作為服務提供給客戶。
Platform as a Service,平台即服務,簡稱PaaS,這層的作用是將一個開發平台作為服務提供給使用者。
Infrastructure as a Service, 基礎設施即服務,簡稱IaaS,這層的作用是提供虛擬機器或者其他資源作為服務提供給使用者。
i)SaaS模式
通過SaaS這種模式,使用者只要接上網路,並通過瀏覽器,就能直接使用在雲端上啟動並執行應用,而不需要顧慮類似安裝等瑣事,並且免去初期高昂的軟硬體投入。SaaS主要面對的是普通的使用者。 主要產品包括:Salesforce Sales Cloud,Google Apps,Zimbra,Zoho和IBM Lotus Live等。
ii)PaaS模式
通過PaaS這種模式,使用者可以在一個包括SDK,文檔和測試環境等在內的開發平台上非常方便地編寫應用,而且不論是在部署,或者在啟動並執行時候,使用者都無需為伺服器,作業系統,網路和儲存等資源的管理操心,這些繁瑣的工作都由PaaS供應商負責處理,而且PaaS在整合率上面非常驚人,比如一台運行Google App Engine的伺服器能夠支撐成千上萬的應用,也就是說,PaaS是非常經濟的。PaaS主要的使用者是開發人員。主要產品包括:Google App Engine,force.com,heroku和Windows
Azure Platform等。
iii)IaaS模式
通過IaaS這種模式,使用者可以從供應商那裡獲得他所需要的虛擬機器或者儲存等資源來裝載相關的應用,同時這些基礎設施的繁瑣的管理工作將由IaaS供應商來處理。IaaS能通過它上面對虛擬機器支援眾多的應用。IaaS主要的使用者是系統管理員。主要產品包括:Amazon EC2,Linode,Joyent,Rackspace,IBM Blue Cloud和Cisco UCS等。
iv)三種模式之間的關係
它們之間的關係主要可以從兩個角度進行分析:其一是使用者體驗角度,從這個角度而言,它們之間關係是獨立的,因為它們面對不同類型的使用者。其二是技術角度,從這個角度而言,它們並不是簡單的繼承關係(SaaS基於PaaS,而PaaS基於IaaS),因為首先SaaS可以是基於PaaS或者直接部署於IaaS之上,其次PaaS可以構建於IaaS之上,也可以直接構建在實體資源之上。
6.SQL注入指的是?
注入攻擊,是發生於應用程式之資料庫層的安全性漏洞。簡而言之,是在輸入的字串之中注入SQL指令,在設計不良的程式當中忽略了檢查,那麼這些注入進去的指令就會被資料庫伺服器誤認為是正常的SQL指令而運行,因此遭到破壞。例子如下:
某個網站的登入驗證的SQL查詢代碼為
strSQL = "SELECT * FROM users WHERE (name = '" + userName + "') and (pw = '"+ passWord +"');"
惡意填入
userName = "' OR '1'='1";
與
passWord = "' OR '1'='1";
時,將導致原本的SQL字串被填為
strSQL = "SELECT * FROM users WHERE (name = '' OR '1'='1') and (pw = '' OR '1'='1');"
也就是實際上啟動並執行SQL命令會變成下面這樣的
strSQL = "SELECT * FROM users;"
因此達到無帳號密碼,亦可登入網站。所以SQL注入攻擊被俗稱為駭客的填空遊戲。
7.gcc編譯器會對如下哪些語句做原子操作處理:a &=1; a = a & 1; a++;
8.TCP三向交握。SYN;ACK-SYN;ACK;
9.子函數參數和傳回值都是是子類類型,調用此函數到結束的程序呼叫了父類和子類的構造解構函式幾次?
class A{public: A() { cout << "Constructor A" << endl; } ~A() { cout << "Destructor A" << endl; }};class B : public A{public: B() { cout << "Constructor B" << endl; } ~B() { cout << "Destructor B" << endl; }};B Get(B b){ return b;}int main(){ B b; B c = Get(b); return 0;}
運行後,輸出如下:
Constructor A // b
Constructor B
Destructor B // Get中b
Destructor A
Destructor B // c
Destructor A
Destructor B // b
Destructor A
10.找出一段c代碼程式的漏洞。
11.char * GetX()
{
char *p = "hello";
return p;
}
void main()
{
char *str = NULL;
str = GetX();
strcpy(str,"abc");
cout << str << endl;
}
運行之後輸出什嗎? 答案是hello。 堆上面的常數不可以直接修改。strcpy無效。