《程序員面試筆試寶典 第3版》針對(duì)當(dāng)前各大IT企業(yè)面試筆試中常見(jiàn)的問(wèn)題以及注意事項(xiàng),進(jìn)行了深層次地分析。本書除了對(duì)傳統(tǒng)的計(jì)算機(jī)相關(guān)知識(shí)(C/C++、數(shù)據(jù)結(jié)構(gòu)與算法、操作系統(tǒng)等)進(jìn)行介紹外,還根據(jù)當(dāng)前計(jì)算機(jī)技術(shù)的發(fā)展潮流,對(duì)面試筆試中常見(jiàn)的海量數(shù)據(jù)處理進(jìn)行了詳細(xì)地分析。同時(shí),為了更具說(shuō)服力,本書對(duì)面試過(guò)程中求職者存在的問(wèn)題進(jìn)行了深度剖析,總結(jié)提煉了大量程序員面試筆試技巧,這些技巧生動(dòng)形象,對(duì)求職者能夠起到一定的指引作用。本書也從歷年的程序員面試筆試真題中精挑細(xì)選多套完整試題,以供讀者學(xué)完本書后檢測(cè)自我能力,通過(guò)這些試卷與講解,能夠幫助求職者有針對(duì)性地進(jìn)行求職準(zhǔn)備。
《程序員面試筆試寶典 第3版》是一本計(jì)算機(jī)相關(guān)專業(yè)畢業(yè)生面試筆試的求職用書,同時(shí)也適合期望在計(jì)算機(jī)軟硬件行業(yè)大顯身手的計(jì)算機(jī)愛(ài)好者閱讀。
在這里,有面試筆試常見(jiàn)技巧的提煉與總結(jié);
在這里,有面試筆試高頻知識(shí)點(diǎn)的整理與剖析;
在這里,有面試筆試歷年真題的解答與拓展。
本書覆蓋了近三年程序員面試筆試中超過(guò)98%的高頻知識(shí)點(diǎn)。當(dāng)你細(xì)細(xì)品讀完本書后,各類企業(yè)的offer將任由你挑選。一書在手,工作不愁。
自《程序員面試筆試寶典》第1版、第2版發(fā)行以來(lái),在讀者群中產(chǎn)生了強(qiáng)烈反響,被廣大讀者奉為求職必備之寶典,獲取工作之利器。圖書的暢銷并沒(méi)有讓我們作者團(tuán)隊(duì)產(chǎn)生絲毫懈怠,我們也并沒(méi)有因此而沾沾自喜,反而是如履薄冰。使用本書的讀者多了,自然而然地我們肩上的責(zé)任與擔(dān)當(dāng)就更重了,如果我們的圖書中有任何錯(cuò)誤或者是無(wú)法完全滿足當(dāng)前求職者的需求,我們必然會(huì)被讀者唾棄、拋棄,所以,在圖書出版后,我們并沒(méi)有停止前進(jìn)的步伐,我們一直在思考,如何才能讓圖書與時(shí)俱進(jìn),讓讀者看完該書后能夠盡可能好地找到自己滿意的工作。
《程序員面試筆試寶典 第3版》在保留第1版、第2版原有精華內(nèi)容的基礎(chǔ)上,考慮到近兩年IT行業(yè)的背景以及程序員的求職情況,進(jìn)行了以下幾方面的工作:
(1)結(jié)合當(dāng)下的企業(yè)招聘?jìng)?cè)重點(diǎn),去掉了第1版、第2版中部分不常出現(xiàn)在程序員面試筆試中的相關(guān)內(nèi)容:智力題、英語(yǔ)面試攻略、軟件工程等內(nèi)容,新增面試筆試經(jīng)驗(yàn)技巧,更加突出重點(diǎn),從而節(jié)省了讀者的大量時(shí)間,保證每一部分內(nèi)容都是重點(diǎn)、難點(diǎn),提高閱讀 效率。
(2)以附錄的形式新增近兩年各大IT名企的面試筆試真題兩套,同時(shí)給出答案,使得讀者能夠及時(shí)了解當(dāng)前企業(yè)招聘的重點(diǎn)、難點(diǎn),把握復(fù)習(xí)方向,提高求職的成功率。
(3)結(jié)合近兩年以來(lái)程序員求職面試筆試真題的一些變化,本書在講解知識(shí)點(diǎn)的同時(shí),引入了更多的真題,并給出了解答,力求做到真題全覆蓋。
希望本書能夠繼續(xù)為求職者提供必要的幫助,希望每個(gè)閱讀過(guò)本書內(nèi)容的人都能獲得一份理想的工作。
有求職困惑的程序員或是對(duì)本書內(nèi)容存在疑惑的讀者都可以通過(guò)yuancoder@foxmail.com聯(lián)系作者。
編 者
前言
上篇:面試筆試經(jīng)驗(yàn)技巧篇
經(jīng)驗(yàn)技巧1 如何巧妙地回答面試官的問(wèn)題
經(jīng)驗(yàn)技巧2 如何回答技術(shù)性的問(wèn)題
經(jīng)驗(yàn)技巧3 如何回答非技術(shù)性問(wèn)題
經(jīng)驗(yàn)技巧4 如何回答快速估算類問(wèn)題
經(jīng)驗(yàn)技巧5 如何回答算法設(shè)計(jì)問(wèn)題
經(jīng)驗(yàn)技巧6 如何回答系統(tǒng)設(shè)計(jì)題
經(jīng)驗(yàn)技巧7 如何解決求職中的時(shí)間沖突問(wèn)題
經(jīng)驗(yàn)技巧8 如果面試問(wèn)題曾經(jīng)遇見(jiàn)過(guò),是否要告知面試官
經(jīng)驗(yàn)技巧9 在被企業(yè)拒絕后是否可以再申請(qǐng)
經(jīng)驗(yàn)技巧10 如何應(yīng)對(duì)自己不會(huì)回答的問(wèn)題
經(jīng)驗(yàn)技巧11 如何應(yīng)對(duì)面試官的“激將法”語(yǔ)言
經(jīng)驗(yàn)技巧12 如何處理與面試官持不同觀點(diǎn)這個(gè)問(wèn)題
經(jīng)驗(yàn)技巧13 什么是職場(chǎng)暗語(yǔ)
下篇:面試筆試技術(shù)攻克篇
第1章 程序設(shè)計(jì)基礎(chǔ)
1.1 C/C++關(guān)鍵字
1.1.1 static(靜態(tài))變量有什么作用
1.1.2 const有哪些作用
1.1.3 switch語(yǔ)句中的case結(jié)尾是否必須添加break語(yǔ)句
1.1.4 volatile在程序設(shè)計(jì)中有什么作用
1.1.5 斷言ASSERT( )是什么
1.1.6 枚舉變量的值如何計(jì)算
1.1.7 char str1[] = "abc"; char str2[] = "abc"; str1與str2不相等,為什么
1.1.8 為什么有時(shí)候main( )函數(shù)會(huì)帶參數(shù)?參數(shù)argc與argv的含義是什么
1.1.9 C++里面是不是所有的動(dòng)作都是main( )函數(shù)引起的
1.1.10 *p++與(*p)++等價(jià)嗎?為什么
1.1.11 前置運(yùn)算與后置運(yùn)算有什么區(qū)別
1.1.12 a是變量,執(zhí)行(a++) += a語(yǔ)句是否合法
1.1.13 如何進(jìn)行float、bool、int、指針變量與“零值”的比較
1.1.14 new/delete與malloc/free的區(qū)別是什么
1.1.15 什么時(shí)候需要將引用作為返回值
1.1.16 變量名為618Software是否合法
1.1.17 C語(yǔ)言中,整型變量x小于0,是否可知x×2也小于0
1.1.18 exit(status)是否與從main( )函數(shù)返回的status等價(jià)
1.1.19 已知String類定義,如何實(shí)現(xiàn)其函數(shù)體
1.1.20 在C++語(yǔ)言中如何實(shí)現(xiàn)模板函數(shù)的外部調(diào)用
1.1.21 在C++語(yǔ)言中,關(guān)鍵字explicit有什么作用
1.1.22 C++中異常的處理方法以及使用了哪些關(guān)鍵字
1.1.23 如何定義和實(shí)現(xiàn)一個(gè)類的成員函數(shù)為回調(diào)函數(shù)
1.2 內(nèi)存分配
1.2.1 內(nèi)存分配的形式有哪些
1.2.2 什么是內(nèi)存泄漏
1.2.3 ?臻g的最大值是多少
1.2.4 什么是緩沖區(qū)溢出
1.3 sizeof
1.3.1 strlen("\0")=?sizeof("\0")=?
1.3.2 對(duì)于結(jié)構(gòu)體而言,為什么sizeof返回的值一般大于期望值
1.3.3 指針進(jìn)行強(qiáng)制類型轉(zhuǎn)換后與地址進(jìn)行加法運(yùn)算,結(jié)果是什么
1.4 指針
1.4.1 使用指針有哪些好處
1.4.2 引用還是指針
1.4.3 指針和數(shù)組是否表示同一概念
1.4.4 指針是否可進(jìn)行>、<、>=、<=、= =運(yùn)算
1.4.5 指針與數(shù)字相加的結(jié)果是什么
1.4.6 野指針?空指針
1.5 預(yù)處理
1.5.1 C/C++頭文件中的ifndef/define/endif的作用有哪些
1.5.2 #include 和#include “filename.h” 有什么區(qū)別
1.5.3 #define有哪些缺陷
1.5.4 如何使用define 聲明一個(gè)常數(shù),用以表明1年中有多少秒(忽略閏年問(wèn)題)
1.5.5 含參數(shù)的宏與函數(shù)有什么區(qū)別
1.5.6 宏定義平方運(yùn)算#define SQR(X) X*X是否正確
1.5.7 不能使用大于、小于、if語(yǔ)句,如何定義一個(gè)宏來(lái)比較兩個(gè)整數(shù)a、b的大小
1.5.8 如何判斷一個(gè)變量是有符號(hào)數(shù)還是無(wú)符號(hào)數(shù)
1.5.9 #define TRACE(S) (printf("%s\n", #S), S)是什么意思
1.5.10 不使用sizeof,如何求int占用的字節(jié)數(shù)
1.5.11 如何使用宏求結(jié)構(gòu)體的內(nèi)存偏移地址
1.5.12 如何用sizeof判斷數(shù)組中有多少個(gè)元素
1.5.13 枚舉和define有什么不同
1.5.14 typdef和define有什么區(qū)別
1.5.15 C++中宏定義與內(nèi)聯(lián)函數(shù)有什么區(qū)別
1.5.16 定義常量誰(shuí)更好?#define還是const
1.6 結(jié)構(gòu)體與類
1.6.1 C語(yǔ)言中struct與union的區(qū)別是什么
1.6.2 C和C++中struct的區(qū)別是什么
1.6.3 C++中struct與class的區(qū)別是什么
1.7 位操作
1.7.1 一些結(jié)構(gòu)聲明中的冒號(hào)和數(shù)字是什么意思
1.7.2 最有效的計(jì)算2乘以8的方法是什么
1.7.3 如何使用位操作求兩個(gè)數(shù)的平均值
1.7.4 如何求解整型數(shù)的二進(jìn)制表示中1的個(gè)數(shù)
1.7.5 不能用sizeof( )函數(shù),如何判斷操作系統(tǒng)是16位,還是32位
1.7.6 嵌入式編程中,什么是大端?什么是小端
1.7.7 考慮n位二進(jìn)制數(shù),有多少個(gè)數(shù)中不存在兩個(gè)相鄰的1
1.7.8 不用除法操作符如何實(shí)現(xiàn)兩個(gè)正整數(shù)的除法
1.8 函數(shù)
1.8.1 怎么樣寫一個(gè)接受可變參數(shù)的函數(shù)
1.8.2 函數(shù)指針與指針函數(shù)有什么區(qū)別
1.8.3 C++函數(shù)傳遞參數(shù)的方式有哪些
1.8.4 重載與覆蓋有什么區(qū)別
1.8.5 無(wú)參數(shù)構(gòu)造函數(shù)是否可以調(diào)用單參數(shù)構(gòu)造函數(shù)
1.8.6 C++中函數(shù)調(diào)用有哪幾種方式
1.8.7 什么是可重入函數(shù)?C語(yǔ)言中如何寫可重入函數(shù)
1.9 數(shù)組
1.9.1 int a[2][2]={{1},{2,3}},則a[0][1]的值是多少
1.9.2 如何合法表示二維數(shù)組
1.9.3 a是數(shù)組,(int*)(&a+1)表示什么意思
1.9.4 不使用流程控制語(yǔ)句,如何打印出1~1000的整數(shù)
1.9.5 char str[1024];?scanf("%s",str)是否安全
1.9.6 行存儲(chǔ)與列存儲(chǔ)中哪種存儲(chǔ)效率高
1.10 變量
1.10.1 全局變量和靜態(tài)變量有什么異同
1.10.2 局部變量需要“避諱”全局變量嗎
1.10.3