2013搜狐實習招聘筆試題

第一部分:四個中選出不一樣的一個。javascript

1.A:CVS  B:SVN  C:GIT  D:SSHhtml

CVS是一個C/S系統,多個開發人員經過一箇中心版本控制系統來記錄 文件版本,從而達到保證文件同步的目的。CVS版本控制系統是一種GNU 軟件包,主要用於在多人 開發環境下的源碼的維護。
SVN( subversion)是近年來崛起的 版本管理工具,是 cvs的接班人。目前,絕大多數 開源軟件都使用svn做爲代碼 版本管理軟件。
Git是一個開源的分佈式版本控制系統,用以有效、高速的處理從很小到很是大的項目版本管理。Git 是 Linus Torvalds 爲了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。
SSH(Struts,Spring,Hibernate) Struts進行 流程控制,Spring進行業務流轉,Hibernate進行數據庫操做的封裝!
答案:【D】

2.A:AirBNB  B:CragList  C:Yandex  D:Monster前端

Airbnb是一個旅行房屋租賃社區,用戶可經過網絡或手機應用程序發佈、搜索度假房屋租賃信息並完成在線預約程序。Airbnb的概念抽象一下,它的邏輯應該是:有空閒的資源就能夠出租,就能夠提升閒置資源利用率從而得到最大收益。java

Craigslist是一個網上大型免費分類廣告網站,但在某些城市的徵才廣告需付費,這也是這網絡公司的主要收入。python

Yandex(俄語ЯндексNASDAQYNDX)是一家俄羅斯互聯網企業,旗下的搜索引擎在俄國內擁有逾60%的市場佔有率,[1]同時也提供其餘的一系列互聯網產品和服務。web

Monster全球最大的專業招聘網站,也是全球最大的招聘服務供應商,其訪問量長期位居30位內,提供由招聘代理、線上招聘、獵頭服務和招聘黃頁廣告四項構成的全方位的全球招聘解決方案。sql

答案:【】

3.A:AWK  B:Shell C:Sed  D:Bashshell

AWK是一種優良的文本處理工具。它不只是 Linux 中也是任何環境中現有的功能最強大的數據處理引擎之一。數據庫

Shell俗稱殼(用來區別於核),是指「提供使用者使用界面」的軟件(命令解析器)。express

sed是stream editor的縮寫。是一個非交互式上下文(context)編輯器

bash 是一個爲GNU計劃編寫的Unix shell。

答案:【】

5.A:LVS  B:Nginx  C:Lighttpd  D:Apache

LVS是Linux Virtual Server的簡寫,意即Linux虛擬服務器,是一個虛擬的服務器集羣系統。

Nginx ("engine x") 是一個高性能的 HTTP 和 反向代理 服務器,也是一個 IMAP/POP3/SMTP 代理服務器

Lighttpd 是一個德國人領導的開源Web服務器軟件,其根本的目的是提供一個專門針對高性能網站,安全、快速、兼容性好而且靈活的web server環境。具備很是低的內存開銷、cpu佔用率低、效能好以及豐富的模塊等特色。
Apache是世界使用排名第一的Web 服務器軟件。它能夠運行在幾乎全部普遍使用的 計算機平臺上,因爲其 跨平臺和安全性被普遍使用,是最流行的Web服務器端軟件之一。
答案:【A】

4.A:AVL  B:Huffman  C:B  D:B+

AVL樹是最早發明的自平衡二叉查找樹。在AVL樹中任何節點的兩個兒子子樹的高度最大差異爲一,因此它也被稱爲高度 平衡樹。查找、插入和刪除在平均和最壞狀況下都是O(log n)。增長和刪除可能須要經過一次或屢次樹旋轉來從新平衡這個樹。
給定n個權值做爲n個葉子結點,構造一棵二叉樹,若帶權路徑長度達到最小,稱這樣的二叉樹爲最優二叉樹,也稱爲哈夫曼樹(Huffman tree)。
二叉排序樹(Binary Sort Tree)又稱二叉查找樹,也叫B樹。
它或者是一棵空樹;或者是具備下列性質的 二叉樹
(1)若左子樹不空,則左子樹上全部結點的值均小於左子樹所在樹的根結點的值;
(2)若右子樹不空,則右子樹上全部結點的值均大於右子樹所在樹的根結點的值;
(3)左、右子樹也分別爲 二叉排序樹
B+樹是應文件系統所需而出的一種 B-樹的變型樹。一棵m階的B+樹和m階的B-樹的差別在於:
1.有n棵子樹的結點中含有n個 關鍵字
2.全部的葉子結點中包含了所有 關鍵字的信息,及指向含這些關鍵字記錄的 指針,且葉子結點自己依關鍵字的大小自小而大順序連接。
3.全部的非 終端結點能夠當作是 索引部分,結點中僅含其子樹(根結點)中的最大(或最小) 關鍵字
一般在B+樹上有兩個頭 指針,一個指向根結點,一個指向 關鍵字最小的葉子結點。
答案:【D】

6.A:Spring  B:Ibatis  C:Velocity  D:Zend

Spring是一個開源框架,Spring 是於2003 年興起的一個輕量級的Java 開發框架,由Rod Johnson 在其著做Expert One-On-One J2EE Development and Design中闡述的部分理念和原型衍生而來。它是爲了解決企業應用開發的複雜性而建立的。

iBATIS一詞來源於「internet」和「abatis」的組合,是一個由Clinton Begin在2001年發起的 開放源代碼項目。最初側重於密碼 軟件的開發,如今是一個基於 Java持久層框架。
Velocity是一個基於java的模板引擎(template engine)。它容許任何人僅僅簡單的使用模板語言(template language)來引用由java代碼定義的對象。
Zend引擎是一個 開源腳本引擎(一個 虛擬機),因做爲 PHP語言的重要核心而聞名。 
答案:【D】

7.A:Latin1  B:GBK  C:JIS  D:ASCII

JIS, 日本工業標準的簡稱,由日本工業標準調查會組織制定和審議。也能夠表示一種函數。

其餘三個是編碼標準。 

答案:【A】

8.A:H1  B:BR  C:DIV  D:P

標題文字 <h#>..........</h#> #=1~6;h1爲最大字,h6爲最小字。
換行 <br>。
分段 <p>。
<div >層的意思</div>。 

答案:【B】

9.A:JQuery  B:Node.js  C:Prototype  D:CommonJS

Jquery是繼prototype以後又一個優秀的Javascrīpt框架。它是輕量級的js庫(壓縮後只有21k) ,它兼容CSS3,還兼容各類瀏覽器

Node.js是一套用來編寫高性能網絡服務器的JavaScript工具包。

在JavaScript中,prototype對象是實現 面向對象的一個重要機制。每一個函數就是一個對象(Function), 函數對象都有一個子對象 prototype對象,類是以函數的形式來定義的。prototype表示該函數的原型,也表示一個類的成員的集合。 prototype.js是由Sam Stephenson寫的一個javascript類庫。
CommonJS API定義不少普通應用程序(主要指非瀏覽器的應用)使用的API,從而填補了這個空白。 
答案:【D】

10.A:enum  B:char  C:float  D:int

enum不是基本類型。 

答案:【A】

11.A:XML  B:JSon  C:Base64  D:YAML

可擴展標記語言 (Extensible Markup Language, XML) ,用於標記電子文件使其具備結構性的標記語言,能夠用來標記數據、定義數據類型,是一種容許用戶對本身的標記語言進行定義的源語言。

JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。它基於JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一個子集。 JSON採用徹底獨立於語言的文本格式,可是也使用了相似於C語言家族的習慣。

Base64是網絡上最多見的用於傳輸8Bit字節代碼的編碼方式之一。

YAML是一種很簡單的相似於XML的數據描述語言,語法比XML簡單不少。 

答案:【C】

12.A:fopen  B:fread  C:fseek  D:fwrite

fopen打開文件。

fread讀文件。

fseek函數設置文件指針stream的位置。

fwrite寫文件。 

答案:【D】

13.A:JAVA  B:Python  C:objectC  D:C#

Python是腳本語言。 

答案:【B】

14.A:Eclipse  B:VS2012  C:Aptana  D:Emacs

Emacs是文本編輯器。 

答案:【D】

15.A:main  B:typedef  C:sizeof  D:enum

main不是關鍵字。 

答案:【A】

16.A:telnet  B:rsync  C:wget  D:scp

Telnet協議是TCP/IP協議族中的一員,是Internet遠程登錄服務的標準協議和主要方式。

rsync是類unix系統下的數據鏡像備份工具,從軟件的命名上就能夠看出來了——remote sync。

wget是一個從網絡上自動下載文件的自由工具,支持經過HTTP、HTTPS、FTP三個最多見的 TCP/IP協議下載,並可使用HTTP代理。

scp就是secure copy,是用來進行遠程文件拷貝的。 

答案:【B】

17.A:Mysql  B:MongoDB  C:DB2  D:PostgreSQL

MongoDB是一個基於分佈式文件存儲的數據庫。其餘三個是關係型數據庫系統。 

答案:【B】

18.A:fiddler  B:firebug  C:httpwatch  D:IETester

Fiddler是一個http調試代理,它可以記錄並檢查全部你的電腦和互聯網之間 的http通信,設置斷點,查看Fiddle 全部的「進出」的數據。

Firebug是firefox下的一個插件,可以調試全部網站語言。

HttpWatch是強大的網頁數據分析工具.集成在Internet Explorer工具欄.包括網頁摘要.Cookies管理.緩存管理.消息頭髮送/接受.字符查詢.POST 數據和目錄管理功能.報告輸出.HttpWatch 是一款可以收集並顯示深層信息的軟件

IETester是一個WebBrowser控件,包含有五個版本的 IE瀏覽器,界面美觀。
答案:【A】

19.A:<nav>  B:<footer>  C:<meta>  D:<canvas>

<nav> 標籤訂義導航連接的部分。

<footer> 標籤訂義 section 或 document 的頁腳。

<meta> 標籤位於文檔的頭部,不包含任何內容。<meta> 標籤的屬性定義了與文檔相關聯的名稱/值對。

<canvas> 標籤訂義圖形,好比圖表和其餘圖像。 

答案:【C】

20.A:MacOS  B:IOS  C:Andriod  D:WP8

MacOS是電腦操做系統。其餘的是手機操做系統。 

答案:【A】
第二部分:填空題
1.52張牌,沒有大小王,平均分給4我的,至少一我的拿到至少2張A的機率是(  ).去掉4張K,剩下48張牌,抽到的機率比剛纔(大仍是小)。無數張牌,抽到的機率是()。
2.2個骰子,搖到7的機率(1/6 )。若搖到6的機率是50%,則搖到7的機率(5/18 )。
第三部分:論述題
1.請從C/C++、java、python、javascript語言種任一種,論述其基本數據類型,API種類,適用範圍以及優缺點。
  2013年搜狐實習生技術類筆試題
C語言優勢:
一、C語言靈活性好,效率高,能夠接觸到軟件開發比較底層的東西。
二、微軟的MFC庫博大精深,學會它可讓爲所欲爲地進行編程。
三、VC是微軟製做的產品,與操做系統的結合更加緊密。
缺點:
對使用者的要求比較高,既要具有豐富的C語言編程經驗,又要具備必定的Windows編程基礎,它的過於專業使得通常的編程愛好者學習起來會有不小的困難。

C++語言優勢:
一、C++語言的優勢所有得以繼承。
二、徹底的可視化。
三、極強的兼容性,支持OWL、VCL和MFC三大類庫。
四、編譯速度很是快。
缺點:
因爲推出的時間過短,關於它的各類資料還不太多。
2.對第一題中的語言,論述其在調試過程當中出現的問題和錯誤種類。
一、   atal error C1010: unexpected end of file while looking for precompiled header directive。
尋找預編譯頭文件路徑時遇到了不應遇到的文件尾。(通常是沒有#include "stdafx.h")
二、fatal error C1083: Cannot open include file: 'R…….h': No such file or directory
不能打開包含文件「R…….h」:沒有這樣的文件或目錄。
三、error C2011: 'C……': 'class' type redefinition
類「C……」重定義。
四、error C2018: unknown character '0xa3'
不認識的字符'0xa3'。(通常是漢字或中文標點符號)
五、error C2057: expected constant expression
但願是常量表達式。(通常出如今switch語句的case分支中)
六、error C2065: 'IDD_MYDIALOG' : undeclared identifier
「IDD_MYDIALOG」:未聲明過的標識符。
七、error C2082: redefinition of formal parameter 'bReset'
函數參數「bReset」在函數體中重定義。
八、error C2143: syntax error: missing ':' before '{'
句法錯誤:「{」前缺乏「;」。
九、error C2146: syntax error : missing ';' before identifier 'dc'
句法錯誤:在「dc」前丟了「;」。
十、error C2196: case value '69' already used
值69已經用過。(通常出如今switch語句的case分支中)
十一、error C2509: 'OnTimer' : member function not declared in 'CHelloView'
成員函數「OnTimer」沒有在「CHelloView」中聲明。
十二、error C2511: 'reset': overloaded member function 'void (int)' not found in 'B'
重載的函數「void reset(int)」在類「B」中找不到。
1三、error C2555: 'B::f1': overriding virtual function differs from 'A::f1' only by return type or calling convention
類B對類A中同名函數f1的重載僅根據返回值或調用約定上的區別。
1四、error C2660: 'SetTimer' : function does not take 2 parameters
「SetTimer」函數不傳遞2個參數。
1五、warning C4035: 'f……': no return value
「f……」的return語句沒有返回值。
1六、warning C4553: '= =' : operator has no effect; did you intend '='?
沒有效果的運算符「= =」;是否改成「=」?
1七、warning C4700: local variable 'bReset' used without having been initialized
局部變量「bReset」沒有初始化就使用。
1八、error C4716: 'CMyApp::InitInstance' : must return a value
「CMyApp::InitInstance」函數必須返回一個值。
1九、LINK : fatal error LNK1168: cannot open Debug/P1.exe for writing
鏈接錯誤:不能打開P1.exe文件,以改寫內容。(通常是P1.Exe還在運行,未關閉)
20、error LNK2001: unresolved external symbol "public: virtual _ _thiscall C……::~C……(void)"
鏈接時發現沒有實現的外部符號(變量、函數等)。 
 
錯誤種類:
語法錯誤,好比關鍵字拼寫錯誤。
邏輯錯誤,好比原本要須要計算和,卻在編程的過程將加號誤寫爲減號,結果輸出了差。
運行時錯誤,好比在運行的過程當中,空間耗盡。
 
3.列舉程序漏洞種類,以及如何系統性的避免這些漏洞。

1、軟件編寫存在bug
不管是服務器程序、客戶端軟件仍是操做系統,只要是用代碼編寫的東西,都會存在不一樣程度的bugBug主要分爲如下幾類:
(1) 、緩衝區溢出:指入侵者在程序的有關輸入項目中了輸入了超過規定長度的字符串,超過的部分一般就是入侵者想要執行的攻擊代碼,而程序編寫者又沒有進行輸入長度的檢查,最終致使多出的攻擊代碼佔據了輸入緩衝區後的內存而執行。別覺得爲登陸用戶名留出了200個字符就夠了而再也不作長度檢查,所謂防小人不防君子,入侵者會想盡一切辦法嘗試攻擊的途徑的。
(2)、意料外的聯合使用問題:一個程序常常由功能不一樣的多層代碼組成,甚至會涉及到最底層的操做系統級別。入侵者一般會利用這個特色爲不一樣的層輸入不一樣的內容,以達到竊取信息的目的。例如:對於由Perl編寫的程序,入侵者能夠在程序的輸入項目中輸入相似「mail</etc/passwd」的字符串,從而使perl讓操做系統調用郵件程序,併發送出重要的密碼文件給入侵者。借刀殺人、借Mail,實在是高!
(3) 、不對輸入內容進行預期檢查:有些編程人員怕麻煩,對輸入內容不進行預期的匹配檢查,使入侵者輸送炸彈的工做輕鬆簡單。
(4)Raceconditions:多任務多線程的程序愈來愈多,在提升運行效率的同時,也要注意Raceconditions的問題。好比說:程序A和程序B都按照//的順序操做一個文件,當A進行完讀和改的工做時,B啓動當即執行完//的所有工做,這時A繼續執行寫工做,結果是A的操做沒有了表現!入侵者就可能利用這個處理順序上的漏洞改寫某些重要文件從而達到闖入系統的目的,因此,編程人員要注意文件操做的順序以及鎖定等問題。
2、系統配置不當
(1) 、默認配置的不足:許多系統安裝後都有默認的安全配置信息,一般被稱爲easy to use。但遺憾的是,easy to use還意味着easy to break in。因此,必定對默認配置進行揚棄的工做。
(2)、 管理員懶散:懶散的表現之一就是系統安裝後保持管理員口令的空值,並且隨後不進行修改。要知道,入侵者首先要作的事情就是搜索網絡上是否有這樣的管理員爲空口令的機器。
(3) 、臨時端口:有時候爲了測試之用,管理員會在機器上打開一個臨時端口,但測試完後卻忘記了禁止它,這樣就會給入侵者有洞可尋、有漏可鑽。一般的解決策略是:除非一個端口是必須使用的,不然禁止它!通常狀況下,安全審計數據包可用於發現這樣的端口並通知管理者。
(4) 、信任關係:網絡間的系統常常創建信任關係以方便資源共享,但這也給入侵者帶來借牛打力、間接攻擊的可能,例如,只要攻破信任羣中的一個機器,就有可能進一步攻擊其餘的機器。因此,要對信任關係嚴格審覈、確保真正的安全聯盟。
3、口令失竊
(1) 、弱不由破的口令:就是說雖然設置了口令,但卻簡單得再簡單不過,狡猾的入侵者只需吹灰之力就可破解。
(2) 、字典攻擊:就是指入侵者使用一個程序,該程序藉助一個包含用戶名和口令的字典數據庫,不斷地嘗試登陸系統,直到成功進入。毋庸置疑,這種方式的關鍵在於有一個好的字典。
(3) 、暴力攻擊:與字典攻擊相似,但這個字典倒是動態的,就是說,字典包含了全部可能的字符組合。例如,一個包含大小寫的4字符口令大約有50萬個組合,1個包含大小寫且標點符號的7字符口令大約有10萬億組合。對於後者,通常的計算機要花費大約幾個月的時間才能試驗一遍。看到了長口令的好處了吧,真正是一兩撥千斤啊!
4、嗅探未加密通信數據
(1)、共享介質:傳統的以太網結構很便於入侵者在網絡上放置一個嗅探器就能夠查看該網段上的通信數據,可是若是採用交換型以太網結構,嗅探行爲將變得很是困難。
(2)、服務器嗅探:交換型網絡也有一個明顯的不足,入侵者能夠在服務器上特別是充當路由功能的服務器上安裝一個嗅探器軟件,而後就能夠經過它收集到的信息闖進客戶端機器以及信任的機器。例如,雖然不知道用戶的口令,但當用戶使用Telnet軟件登陸時就能夠嗅探到他輸入的口令了。
(3)、 遠程嗅探:許多設備都具備RMON(Remotemonitor,遠程監控)功能以便管理者使用公共體字符串(publiccommunitystrings)進行遠程調試。隨着寬帶的不斷普及,入侵者對這個後門愈來愈感興趣了。
5、設計存在缺陷
(1) 、 TCP/IP協議的缺陷:TCP/IP協議如今已經廣爲應用、可是它設計時倒是在入侵者猖狂肆虐的今天之很早之前設計出來的。所以,存在許多不足形成安全漏洞在所不免,例如smurf攻擊、ICMPUnreachable數據包斷開、IP地址欺騙以及SYNflood。然而,最大的問題在於IP協議是很是容易輕信的,就是說入侵者能夠隨意地僞造及修改IP數據包而不被發現。如今Ipsec協議已經開發出來以克服這個不足,但尚未獲得普遍的應用。
6、系統攻擊
系統攻擊是指某人非法使用或破壞某一信息系統中的資源,以及非受權使系統喪失部分或所有服務功能的行爲。

 

4.請從「唱吧」和「微信」兩款APP中,選擇一款,畫出系統結構圖。注意:考慮前端、後端、數據流轉。

 

注:以上答案只是我我的的觀點,不必定對,歡迎你們指正。 

 

一個網站,用戶能夠傳圖片url,指定裁圖方式和尺寸、參數,獲得裁完的圖片。

  1. 設計url規範

  2. 考慮負載、攻擊啥的一系列緣由,畫出系統架構圖。從沒畫過,因此果斷放棄了……

相關文章
相關標籤/搜索