導航:首頁 > 程序命令 > 程序員面試金典代碼

程序員面試金典代碼

發布時間:2022-04-24 20:32:33

程序員面試的時候有哪些加分的小技巧

以自然的狀態應對每場面試

突出你的項目亮點,而不要只是把一個硬生生的項目擺在那裡。

比如有些程序員在面試時為了讓面試官感受到自己項目的復雜性,或是為了在面試官面前展現自己代碼量的博大精深。往往會長篇大論說上一大堆,結果卻未能找到重點。這反而讓面試官覺得你空有花拳綉腿,沒有實在功夫,對面試產生不利。

記住,在介紹你項目的時候,最主要是把那些比較關鍵的點挑出來。著重體現你經手項目中最深層次的技術點,用技術人都能理解的詞彙去講述你的項目。

只有抓住面試官的心,讓他認為有繼續聽下去的必要,讓面試官在你的一番介紹中認可你的能力,覺得你就是ta想要找的人,你才有絕大可能贏得那場面試。

一場面試下來,一定要及時做總結,比如哪裡表現不是太好,需要改進的點在什麼地方。

⑵ 《程序員面試金典中文第6版》pdf下載在線閱讀全文,求百度網盤雲資源

《程序員面試金典中文第6版》網路網盤pdf最新全集下載:
鏈接: https://pan..com/s/1dSQs_6cUiYZ1qE69hYHe1A

?pwd=wwvc 提取碼: wwvc
簡介:本書是原谷歌面試官的經驗之作,層層緊扣程序員面試的每一個環節,全面而詳盡地介紹了程序員應當如何應對面試,才能在面試中脫穎而出。內容主要涉及面試流程解析,面試官的幕後決策及可能提出的問題,面試前的准備工作,對面試結果的處理,以及出自微軟、蘋果、谷歌等多家知名公司的189道編程面試題及詳細解決方案。第6版修訂了上一版中一些題目的解法,為各章新增了介紹性內容,加入了更多的演算法策略,並增添了對所有題目的提示信息。

⑶ 《程序員代碼面試指南第二版》pdf下載在線閱讀全文,求百度網盤雲資源

《程序員代碼面試指南第二版》網路網盤pdf最新全集下載:
鏈接: https://pan..com/s/1v1uD6fUCW7MEjk9TzkmtYA

?pwd=cq7j 提取碼: cq7j
簡介:《程序員代碼面試指南(第2版)》是一本程序員代碼面試寶典!書中對IT名企代碼面試各類題目的至優解進行了總結,並提供了相關代碼實現。針對當前程序員面試缺乏題目匯總這一痛點,本書選取將近200道真實出現過的經典代碼面試題,幫助廣大程序員做充分的面試准備。「刷」完本書後,你就是「題王」!

java書籍推薦有哪些

Java的好書推薦
第一部分:Java語言篇
1.《Java編程規范》 適合對象:初級、中級
介紹:這本書的作者是被譽為Java之父的James Gosling,入門者推薦閱讀,對基礎的講解很不錯。
2.《Java編程思想》 適合對象:初級、中級
介紹:豆瓣給出了9.1的評分,全球程序員廣泛贊譽。有人說這本書不適合初學者,不過小編認為作者並沒有對讀者已有的知識經驗有過多要求,只是要求讀者需要知道基本的程序語言。作者以通俗易懂及小而直接的示例解釋了一個個晦澀抽象的概念,需要花時間細細研讀。
3.《Java核心技術:卷I基礎知識》 適合對象:初級、中級
介紹:官方機構圖書,備一本總是沒錯的。這本書比較全面也通俗易懂。可以當字典的功能來用,學習入門必備。
4.《Java數據結構和演算法》 適合對象:初級、中級、高級
介紹:這本書目前基本斷貨,足以說明搶手程度。作者主要使用Java語言描述了我們常用的數據結構,值得一看。
5.《Java與模式》 適合對象:中級、高級
介紹:難得一見的國人寫的Java好書。主要講解設計原則以及最為常見的設計模式的實用教材。這本書出現的比較早,是初級到中高級必讀的圖書之一。
6.《SCJP學習指南》 適合對象:初級、中級
介紹:官方考試的必備圖書,對檢驗自己的Java學習情況很有幫助。這本書特別適合學生閱讀,這本書理解透了,找工作面試Java題目不會有任何問題。一些工作多年的工程師都會在里邊遇到一些不會做的題目。
第二部分:中級進階篇
1.《重構:改善既有代碼的設計》 適合對象:中級、高級
介紹:清晰揭示了重構的過程,解釋了重構的原理和最佳實踐方式,並給出了何時以及何地應該開始挖掘代碼以及改善。大師的傑作,讓你明白軟體是一步步改進的,不是一蹴而就的。
2.《XML入門經典》 適合對象:初級、中級、高級
介紹:很多人覺得沒必要買XML書籍,不過我還是覺得推薦一本給你作為工具書,而且看本書可以使得你對XML方方面面有個了解。裡面不少東西還是用到的。
3.《jQuery基礎教程》 適合對象:初級、中級、高級
介紹:從這個開始學習jQuery才是根本,不然以後遇到的很多奇怪問題不知所以然。jQuery個人感覺已經成為目前的javascript標准庫了,插件無數,大大簡化了前端工作。
4.《JavaScript權威指南》 適合對象:初級、中級、高級
介紹:一本從全新視角和層次來介紹JavaScript的參考書,填補了市場的空白。是學習js的必備參考工具書之一。
5.《代碼整潔之道》 適合對象:中級、高級
介紹:講述了一系列行之有效的整潔代碼操作實踐。軟體工程的理想編碼是無數人編出來的代碼像一個人寫的,這本書當作規范就不錯。
第三部分:高級篇
1.《Enterprise JavaBeans 3.0中文版》適合對象:中級,高級
介紹:EJB技術在大型系統中使用,主要有銀行等金融機構。是開發分布式程序的選項之一,不過我不喜歡,其實銀行使用的也不怎麼的。結合JavaEE容器使用,開源的有JBoss,商用的有IBM和Oracle支持。
2.《Java並發編程實踐》 適合對象:中級、高級
介紹:這本書名為《Java並發編程實踐》有些抹殺了它的價值,其中並非只講述了Java的多線程設施,對一般的並發編程的rationale也有相當透徹的闡述。市面上並發編程的書比較少,這一本推薦閱讀。
3.《Hadoop權威指南》 適合對象:中級、高級
介紹:雲計算必備圖書。作為分布式計算的工具,Hadoop目前可以說是市場上唯一成熟的產品,而且大家也都向其看齊。而起雲計算炙手可熱,你搞明白這本書就大概明白了什麼是雲以及怎麼做雲。
4.《Java消息服務》 適合對象:中級、高級
介紹:深入淺出地講解了JMS1.1規范的底層技術、Java類和介面、編程模型及其不同實現等Java消息服務(JMS)和消息傳送機制關鍵技術。講解簡單明了,偏向於如何使用以及設計的一些原則。排版相當不錯。
來源網路老炮java 整理 侵權聯系

⑸ 程序員面試金典上的程序用什麼語言寫的

150個編程題問答從二叉樹到二分查找,該部分涵蓋了關於數據結構和演算法的最常見、最有用的面試題以及最為精巧的解決方案。應對棘手演算法題的5種行之有效的方法通過這5種方法,你可以學會如何處理並攻克演算法難題,包括那些最棘手的演算法題。面試者最容易犯的10個錯誤不要因為這些常見的錯誤而與成功失之交臂。要了解面試者常犯的一些錯誤,學會如何避免這些問題。面試准備的若干策略不要因為沉溺在無窮無盡的面試題中而錯過了最重要的求職建議。這些策略和步驟可以讓你更有效地准備面試。
書 名程序員面試金典
作 者麥克道爾 (Gayle Laakmann McDowell)
類 型計算機與互聯網
出版日期2013年11月1日
語 種簡體中文
ISBN9787115332912
外文名Cracking the Coding Interview: 150 Programming Questions and Solutions, 5th Edition
譯 者李琳驍
出版社人民郵電出版社
頁 數359頁
開 本16
品 牌人民郵電出版社

⑹ 程序員 面試 如何回答

做一份工作,實際就是追尋夢想的過程,而為了完成夢想,必須有一個長期規劃,從而指導我們選擇工作。它是擇業過程中最本質和最原始的參考借鑒。下載鏈接

為此,小雲為你精選一份程序員面試書單,分為職業規劃、編程技能兩部分,適合剛畢業的大學生、正准備換工作的程序員們,涵蓋演算法工程師、Java工程師、測試等多個領域。

軟技能 代碼之外的生存指南約翰 Z.森梅茲 著

這是一本真正從「人」(而非技術也非管理)的角度關注軟體開發人員自身發展的書。書中論述的內容既涉及生活習慣,又包括思維方式,凸顯技術中「人」的因素,全面講解軟體行業從業人員所需知道的所有「軟技能」。

本書聚焦於軟體開發人員生活的方方面面,從揭秘面試的流程到精耕細作出一份殺手級簡歷,從創建大受歡迎的博客到打造你,從提高自己工作效率到與如何與「拖延症」做斗爭,甚至包括如何投資不動產,如何關注自己的健康。

編程珠璣(第2版)喬恩·本特利(Jon Bentley) 著

作者雖然沒有給出解決這些問題的具體代碼,但始終非常富有洞察力和創造力地圍繞著這些折磨程序員的實際問題展開討論,從而引導讀者理解問題並學會解決問題的技能,這些都是程序員實際編程生涯中的基本技能。

為此,本書給出了一些精心設計的有趣而且頗具指導意義的程序,這些程序能夠為那些復雜的編程問題提供清晰而且完備的解決思路,書中還充滿了對實用程序設計技巧及基本設計原則的清晰而睿智的描述。

PS:本書在第一版的基礎上增加了3個方面的新內容:測試、調試和計量,集合表示,字元串問題,並對第一版的所有程序都進行了改寫,生成了等量的新代碼。

重構 改善既有代碼的設計馬丁·福勒(Martin Fowler) 著

軟體開發的不朽經典,生動闡述重構原理和具體做法,普通程序員進階到編程高手必須修煉的秘笈。

重構,一言以蔽之,就是在不改變外部行為的前提下,有條不紊地改善代碼。多年前,正是《重構:改善既有代碼的設計》原版的出版,使重構終於從編程高手們的小圈子走出,成為眾多普通程序員日常開發工作中不可或缺的一部分。《重構:改善既有代碼的設計》也因此成為與《設計模式》齊名的經典著作,被譯為中、德、俄、日等眾多語言,在世界范圍內暢銷不衰。

《重構:改善既有代碼的設計》凝聚了軟體開發社區專家多年摸索而獲得的寶貴經驗,擁有不因時光流逝而磨滅的價值。今天,無論是重構本身,業界對重構的理解,還是開發工具對重構的支持力度,都與《重構:改善既有代碼的設計》最初出版時不可同日而語,但書中所蘊涵的意味和精華,依然值得反復咀嚼,而且往往能夠常讀常新。

C和C++程序員面試秘籍董山海 著

眾多高級語言都從C/C++有所借鑒,所以說C/C++的語言基礎對從事軟體開發的人員來說非常重要。

本書是一本解析C/C++面試題的書,可以幫助求職者更好地准備面試。《C和C++程序員面試秘笈》共包含12章,囊括了目前企業中常見的面試題類型和考點,包括C/C++程序基礎,預處理、const、static與sizeof,引用和指針,字元串,位運算與嵌入式編程,C++面向對象,C++繼承和多態,數據結構,排序,泛型編程,STL,演算法和邏輯思維等最常見的面試題。《C和C++程序員面試秘笈》通過技術點解析、代碼輔佐的方式讓讀者能深刻領會每個考點背後的技術。

本書緊扣面試精髓,對各種技術的剖析一針見血,是目前想找工作的C/C++程序員和剛畢業的大學生的面試寶典。

Java程序員面試寶典楊磊 著

本書對程序設計面試中Java常見的題型和常用解答技巧進行了介紹,對現代職業人如何有效求職、面試考官如何關注求職者動態等做了詳細解說。本書將為您揭開知名IT企業面試、筆試的核心機密;傳授程序員崗位求職的關鍵技巧。

編程之法:面試和演算法心得July 著

本書涉及面試、演算法、機器學習三個主題。書中的每道編程題目都給出了多種思路、多種解法,不斷優化、逐層遞進。本書第1章至第6章分別闡述字元串、數組、樹、查找、動態規劃、海量數據處理等相關的編程面試題和演算法,第7章介紹機器學習的兩個演算法—K近鄰和SVM。此外,每一章都有「舉一反三」和「習題」,以便讀者及時運用所學的方法解決相似的問題,且在附錄中收錄了語言、鏈表、概率等其他題型。

書中的每一道題都是面試的高頻題目,反復出現在最近5年各大公司的筆試和面試中,對面試備考有著極強的參考價值。全書邏輯清晰、通俗易懂,適合熱愛編程、演算法、機器學習,以及准備IT筆試和面試,即將求職、找工作的讀者閱讀。

C#與.NET程序員面試秘笈靳華 著

《C#與.NET程序員面試寶典》取材於各大IT公司的歷年面試題252個(包括研發類筆試及口試題目、情商及智商類題目),詳細分析了應聘C#與.NET程序員職位的常見考點。《C#與.NET程序員面試寶典》主要內容包括:面試流程、基礎語法和技術框架、數據訪問及XML應用、高級特性及應用進階、測試及質量保證、跨國公司經典面試題等。

軟體測試工程師面試指導蔡為東 著

對於想要得到一份軟體測試工程師職位的朋友來說,可能會有一些疑問,如軟體測試這個行業究竟怎麼樣?什麼樣的人適合做軟體測試?面試當中要注意什麼?軟體測試的基本知識點都有哪些?筆試都會涉及哪些內容?等等。本書將解答以上所有的疑問。

本書共6章內容,主要包括軟體測試行業概貌、軟體測試從業人員的基本要求、如何找工作、軟體測試技術基礎、典型的測試工程師筆試題等。本書內容豐富,講解深入淺出,能讓讀者朋友在短時間內掌握基本的測試技術,了解求職過程的各個環節,熟悉各種類型的筆試題,領會面試技巧。本書後附有一些實用的附錄,例如簡歷模板、新人工作指南等,尤其是「我在微軟做軟體測試外包」這一部分內容,寓故事性和知識性於一體,講述了作者在國際軟體巨頭——微軟公司做軟體測試外包的親身經歷,相信對於廣大的讀者朋友有閱讀和參考的價值。

本書適合想要從事軟體測試工作的朋友,也可供初級軟體測試工程師學習之用,另外也可作為大專院校軟體測試培訓的教材之一。

Android高薪之路李寧 著

《Android高薪之路:Android程序員面試寶典》取材於各大IT公司面試真題,所給出的試題盡可能地覆蓋了Android應用開發的各個方面,而且大多數試題都有解析部分,讀者可以通過這部分更深入地理解試題中所包含的技術內容,希望真正做到由點成線,舉一反三。

《Android高薪之路:Android程序員面試寶典》中還將Android中涉及的各個常用技術問題進行篩選、分類。這樣讀者可以有的放矢,對自己還沒有掌握的Android技術進行重點攻破,從而起到事半功倍的效果。除了對每道題目都有詳細的解析和回答外,對相關知識點還有擴展說明。

《Android高薪之路:Android程序員面試寶典》對面試中Android常見的題型和常用解答技巧進行了介紹,它不僅能幫助求職者快速復習相關知識點,也對現代職業人如何有效求職做了詳細解說。《Android高薪之路:Android程序員面試寶典》對於讀者從求職就業到提升計算機專業知識都有顯著的幫助。

編程之美《編程之美小組》

《編程之美—— 微軟 技術面試心得》收集了約60道演算法和 程序設計題目,這些題目大部分在近年的筆試,面試中出現過,或者是被微軟員工熱烈討論過。作者試圖從書中各種有趣的問題出發,引導讀者發現問題,分析問題,解決問題,尋找更優的解法。

書中絕大部分題目都提供了詳細的解說。 每道題目後面還有一至兩道擴展問題,供讀者進一步鑽研。

書中還講述了面試的各種小故事,告訴讀者微軟需要什麼樣的技術人才,重視什麼樣的能力,如何甄別人才。回答讀者關於IT業面試,招聘, 職業發展的疑問。 這本書的很多題目會出現在IT 行業的各種筆試,面試中。但本書更深層的意義在於引導讀者思考,和讀者共享思考之樂,編程之美。

⑺ 誰有JAVA程序員面試的程序題啊

一、 選擇題:(每題1分,共30分)
1. Which statement about the garbage collection mechanism are true? (B)
A.Garbage collection require additional program code in cases where multiple threads are running.
B.The programmer can indicate that a reference through a local variable is no longer of interest.
C.The programmer has a mechanism that explicit and immediately frees the memory used by Java objects.
D.The garbage collection mechanism can free the memory used by Java Object at expectable time.
E.The garbage collection system never reclaims memory from objects while are still accessible to running user threads.
2. Give the following method: D
1)public void method( ){
2) String a,b;
3) a=new String(「hello world」);
4) b=new String(「game over」);
5) System.out.println(a+b+」ok」);
6) a=null;
7) a=b;
8)System.out.println(a);
9) }
In the absence of compiler optimization, which is the earliest point the object a referred is definitely hand to be garbage collection. ()
A. before line 3 B.before line 5 C. before line 6 D.before line 7 E. Before line 9
3. Give the following code:
public class Example{
public static void main(String args[] ){
int l=0;
do{
System.out.println(「Doing it for l is:」+l);
}while(l>0)
System.out.println(「Finish」);
}
}
Which well be output: D
A. Doing it for l is 3 B. Doing it for l is 1C Doing it for l is 2
D. Doing it for l is 0 E. Doing it for l is –1F. Finish
4. 以下(C)是JAVA的保留字。(選擇一項)
A.Java B.Hello C.class D.Class
5. 下面程序運行之後,變數x的值是(B). (選擇一項)
......
//swap方法的聲明
public static void swap(int a,int b){
int t=a;
a=b;
b=t;
}
//main方法
public static void main(String args[]){
int x=2;
int y=3;
swap(x,y);
}
A、2 B、3 C、4 D、6
6. 下面變數var的作用域范圍是(D)。(選擇一項)
1. //....
2. int x;
3. switch(x){
4. case 0:
5. {
6. int var;
7. //process
8. }
9. break;
10. case 1:
11. {
12. int var1;
13. //process
14. }
15. break;
16. }
A、1和16行之間 B、4和8行之間 C、6和8行之間 D、6和14行之間
7. 以下的類(介面)定義中正確的是(A)。(選擇一項)
A.
public class a {
private int x;
public getX(){
return x;
}
}
B.
public abstract class a {
private int x;
public abstract int getX();
public int aMethod(){
return 0;
}
}
C.
public class a {
private int x;
public abstract int getX();
}
D.
public interface interfaceA{
private int x;
public int getX(){
return x;
}
}
8. 已知A類被打包在packageA , B類被打包在packageB ,且B類被聲明為public ,且有一個成員變數x被聲明為protected控制方式 。C類也位於packageA包,且繼承了B類 。則以下說話正確的是(C)(選擇一項)
A. A類的實例不能訪問到B類的實例
B. A類的實例能夠訪問到B類一個實例的x成員
C. C類的實例可以訪問到B類一個實例的x成員
D. C類的實例不能訪問到B類的實例
9. 編譯並運行下面的Java代碼段:
char c='a';
switch (c) {
case 'a':
System.out.println("a");
default:
System.out.println("default");
}

輸出結果是(B)。(選擇一項)
A.代碼無法編譯,因為switch語句沒有一個合法的表達式
B.a Default
C.a
D.default
10. 在Java中,關於final關鍵字的說法正確的是(AC)。(選擇兩項)
A.如果修飾變數,則一旦賦了值,就等同一個常量
B.如果修飾類,則該類只能被一個子類繼承
C.如果修飾方法,則該方法不能在子類中被覆蓋
D.如果修飾方法,則該方法所在的類不能被繼承
11. 在Java中,要想使只有定義該類所在的包內的類可以訪問該類,應該用(A)關鍵字。(選擇一項)
A.不需要任何關鍵字
B.private
C.final
D.protected
12. 在Java中,下面關於包的陳述中正確的是(AD)。(選擇兩項)
A.包的聲明必須是源文件的第一句代碼
B.包的聲明必須緊跟在import語句的後面
C.只有公共類才能放在包中
D.可以將多個源文件中的類放在同一個包中
13. public static void main方法的參數描述是:AB(請選擇2個正確答案)
A.String args[]
B.String[] args
C.Strings args[]z
D.String args
14. 編譯並運行下面的Java程序:B
class A{
int var1=1;
int var2;
public static void main(String[] args){
int var3=3;
A a=new A();
System.out.println(a.var1+a.var2+var3);
}
}
將產生()結果。(選擇一項)
A.0
B.4
C.3
D.代碼無法編譯,因為var2根本沒有被初始化
15. 編譯,運行下列代碼後的結果是:D(選擇一項)
public class Test {
public static void main (String args []) {
int age;
age = age + 1;
System.out.println("The age is " + age);
}
}
A.編譯,運行後沒有輸出
B.編譯,運行後輸出:The age is 1
C.能通過編譯,但運行時產生錯誤
D.不能通過編譯
16. 下列哪些表達式返回true:AB(請選擇2個正確答案 )
A."john" == "john"
B."john".equals("john")
C."john" = "john"
D."john".equals(new Button("john"))
17. Give the code fragment:B
1)switch(x){
2) case 1: System.out.println(「Test 1」);break;
3) case 2:
4) case 3: System.out.println(「Test 2」);break;
5) default: System.out.println(「end」);
6) }
which value of x would cause 「Test 2」 to the output:
A. 1B. 2C. 3D. default
18. Given the following class definition: A
class A{
protected int i;
A(int i){
this.i=i;
}
}
which of the following would be a valid inner class for this class?
Select all valid answers:
A. class B{
}
B.class B extends A{
}
C.class B extends A{
B(){System.out.println(「i=」+i);}
}
D.class B{
class A{}
}
E.class A{}
19. The following code is entire contents of a file called Example.java,causes precisely one error ring compilation: D
1) class SubClass extends BaseClass{
2) }
3) class BaseClass(){
4) String str;
5) public BaseClass(){
6) System.out.println(「ok」);}
7) public BaseClass(String s){
str=s;}
9) }
10) public class Example{
11) public void method(){
12) SubClass s=new SubClass(「hello」);
13) BaseClass b=new BaseClass(「world」);
14) }
15) }

Which line would be cause the error?
A. 9 B. 10 C. 11 D.12
20. Float s=new Float(0.9F);
Float t=new Float(0.9F);
Double u=new Double(0.9);
Which expression』s result is true? B
A. s= =t B. s.equals(t) C. s= =u D. t.equals(u)
21. What happens when you try to compile and run the following program? A
class Mystery{
String s;
public static void main(String[] args){
Mystery m=new Mystery();
m.go();
}
void Mystery(){
s=」constructor」;
}
void go(){
System.out.println(s);
}
}
A.this code will not compile
B.this code compile but throws an exception at runtime
C.this code runs but nothing appears in the standard output
D.this code runs and 「constructor」 in the standard output
E.this code runs and writes 」null」 in the standard output
22. Give the following class: B
public class Example{
String str=new String(「good」);
char ch[]={『a』,』b』,』c』};
public static void main(String args[]){
Example ex=new Example();
ex.change(ex.str,ex.ch);
System.out.println(ex.str+」and」+ex.ch[0] +ex.ch[1] +ex.ch[2]);
}
public void change(String str,char ch[]){
str=」test ok」;ch[0]=』g』;
}
}
Which is the output:
A. good and abc B. good and gbc C. test ok and abc D. test ok and gbc
23. Which correctly create a two dimensional array of integers? CD
A.int a[][] = new int[][];
B.int a[10][10] = new int[][];
C.int a[][] = new int[10][10];
D.int [][]a = new int[10][10];
E.int []a[] = new int[10][10];
24. Examine the following code which includes an inner class: B
public final class Test4 implements A{
class Inner{
void test(){
if (Test4.this.flag);{
sample();
}
}
private boolean flag=false;
}
public void sample(){
System.out.println(「Sample」);
}
public Test4(){
(new Inner()).test();
}
public static void main(String args[]){
new Test4();
}
}
What is the result:
A.Print out 「Sample」
B.Program proces no output but terminates correctly.
C. Program does not terminate.
E.The program will not compile
25. Which statement is true about an inner class? D
A.It must be anonymous
B.It can not implement an interface
C.It is only accessible in the enclosing class
D.It can access any final variables in any enclosing scope
26. public class Test{ A
public int aMethod(){
static int i=0;
i++;
return i;
}
public static void main(String args[]){
Test test = new Test();
test.aMethod();
int j=test.aMethod();
System.out.println(j);
}
}

What is the result?
A.Compilation will fail
B.Compilation will succeed and the program will print」0」.
C.Compilation will succeed and the program will print」1」.
D.Compilation will succeed and the program will print」2」
27. class Super{ D
public int i=0;

public Super(String text){
i=1;}
}

public class Sub extends Super{
public Sub(String text){
i=2;
}
public static void main(String ag[]){
Sub sub=new Sub(「Hello」);
System.out.println(sub.i);
}
}

What is the result?
A.Compilation will fail
B.Compilation will succeed and the program will print」0」.
C.Compilation will succeed and the program will print」1」
D.Compilation will succeed and the program will print」2」
28. Given A
Package foo;

public class Outer{
public static class Inner{
}
}
Which statement is true?
A.An instance of the Inner class can be constructed with 「new Outer.Inner():
B.An instance of the Inner class cannot be constructed outside of package foo;
C.An instance of the Inner class can only be constructed from within the Outer class.
D.From within the package bar, an instance of the Inner class can be constructed with 「new Inner()」
29. What is the result? E
public class Test{
static String s=」Hello」;
public static void main(String args[]){
Test t=new Test();
t.methodA(s);
System.out.println(s);
}
void methodA(String s){
s+=」World」;
}
}
A.print 「Hello」
B.print 「World」
C.print 「Hello World」
D.It does not compile
30. what is the result? C
public class Test{
public static void main(String args[]){
String s=new String(」true」);
Boolean b=new Boolean(true);
If(s.equals(b))
{ System.out.println(「hello」);}
}
}
A.print 「hello」
B.compile error at line 6
C.compile succeed but print nothing
D.compile succeed but throw exception at runtime

1、 B
2、 D
3、 D
4、 C
5、 B
6、 D
7、 A
8、 C
9、 B
10、 AC
11、 A
12、 AD
13、 AB
14、 B
15、 D
16、 AB
17、 B
18、 A
19、 D
20、 B
21、 A
22、 B
23、 CD
24、 B
25、 D
26、 A
27、 D
28、 A
29、 E
30、 C

補充一下:真正的面試時的筆試題,很少是選擇題的,大多都是些問答題或者直接讓你寫程序的。如有你需要正規大公司的面試題,我這有一些word文檔,可以給你發郵件。

⑻ java經典面試題

(4)以下代碼中的兩個sizeof用法有問題嗎?
[C易] void UpperCase( char str[] ) // 將 str 中的小寫字母轉換成大寫字母 { for( size_t i=0; i <sizeof(str)/sizeof(str[0]); ++i ) if( 'a' <=str[i] && str[i] <='z' ) str[i] -= ('a'-'A' ); } char str[] = "aBcDe"; cout < < "str字元長度為: " < < sizeof(str)/sizeof(str[0]) < < endl; UpperCase( str ); cout < < str < < endl; 答案:函數內的sizeof有問題。根據語法,sizeof如用於數組,只能測出靜態數組的大小,無法檢測動態分配的或外部數組大小。函數外的str是一個靜態定義的數組,因此其大小為6,因為還有'\0',函數內的str實際只是一個指向字元串的指針,沒有任何額外的與數組相關的信息,因此sizeof作用於上只將其當指針看,一個指針為4個位元組,因此返回4。
(5)一個32位的機器,該機器的指針是多少位答案:
指針是多少位只要看地址匯流排的位數就行了。80386以後的機子都是32的數據匯流排。所以指針的位數就是4個位元組了。
6。main() { int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); printf("%d,%d",*(a+1),*(ptr-1)); } 答案:2。5 *(a+1)就是a[1],*(ptr-1)就是a[4],執行結果是2,5 &a+1不是首地址+1,系統會認為加一個a數組的偏移,是偏移了一個數組的大小(本例是5個int) int *ptr=(int *)(&a+1); 則ptr實際是&(a[5]),也就是a+5 原因如下: &a是數組指針,其類型為 int (*)[5]; 而指針加1要根據指針類型加上一定的值,不同類型的指針+1之後增加的大小不同 a是長度為5的int數組指針,所以要加 5*sizeof(int) 所以ptr實際是a[5] 但是prt與(&a+1)類型是不一樣的(這點很重要) 所以prt-1隻會減去sizeof(int*) a,&a的地址是一樣的,但意思不一樣,a是數組首地址,也就是a[0]的地址,&a是對象(數組)首地址,a+1是數組下一元素的地址,即a[1],&a+1是下一個對象的地址,即a[5].
7。請問以下代碼有什麼問題: int main() { char a; char *str=&a; strcpy(str,"hello"); printf(str); return 0; } 答案:沒有為str分配內存空間,將會發生異常問題出在將一個字元串復制進一個字元變數指針所指地址。雖然可以正確輸出結果,但因為越界進行內在讀寫而導致程序崩潰。
8。char* s="AAA"; printf("%s",s); s[0]='B'; printf("%s",s); 有什麼錯?答案:"AAA"是字元串常量。s是指針,指向這個字元串常量,所以聲明s的時候就有問題。 cosnt char* s="AAA"; 然後又因為是常量,所以對是s[0]的賦值操作是不合法的。
9。寫一個「標准」宏,這個宏輸入兩個參數並返回較小的一個。答案:.#define Min(X, Y) ((X)>(Y)?(Y):(X)) //結尾沒有『;』
10。嵌入式系統中經常要用到無限循環,你怎麼用C編寫死循環。答案:while(1){}或者for(;;)
11。關鍵字static的作用是什麼?答案:定義靜態變數
12。關鍵字const有什麼含意?答案:表示常量不可以修改的變數。
13。關鍵字volatile有什麼含意?並舉出三個不同的例子?答案:提示編譯器對象的值可能在編譯器未監測到的情況下改變。
14。int (*s[10])(int) 表示的是什麼啊?答案:int (*s[10])(int) 函數指針數組,每個指針指向一個int func(int param)的函數。
15。有以下表達式: int a=248; b=4;int const c=21;const int *d=&a; int *const e=&b;int const *f const =&a; 請問下列表達式哪些會被編譯器禁止?為什麼?答案:*c=32;d=&b;*d=43;e=34;e=&a;f=0x321f; *c 這是個什麼東東,禁止 *d 說了是const,禁止 e = &a 說了是const 禁止 const *f const =&a; 禁止
16交換兩個變數的值,不使用第三個變數。即a=3,b=5,交換之後a=5,b=3; 答案:有兩種解法, 一種用算術演算法, 一種用^(異或) a = a + b; b = a - b; a = a - b; or a = a^b;// 只能對int,char.. b = a^b; a = a^b; or a ^= b ^= a;
17.c和c++中的struct有什麼不同?答案:c和c++中struct的主要區別是c中的struct不可以含有成員函數,而c++中的struct可以。c++中struct和class的主要區別在於默認的存取許可權不同,struct默認為public,而class默認為private
18.#include <stdio.h> #include <stdlib.h> void getmemory(char *p) { p=(char *) malloc(100); strcpy(p,"hello world"); } int main( ) { char *str=NULL; getmemory(str); printf("%s/n",str); free(str); return 0; } 答案:程序崩潰,getmemory中的malloc 不能返回動態內存, free()對str操作很危險
19.char szstr[10]; strcpy(szstr,"0123456789"); 產生什麼結果?為什麼?答案: 長度不一樣,會造成非法的OS
20.列舉幾種進程的同步機制,並比較其優缺點。答案: 原子操作信號量機制 自旋鎖 管程,會合,分布式系統
21.進程之間通信的途徑答案:共享存儲系統消息傳遞系統管道:以文件系統為基礎
22.進程死鎖的原因答案:資源競爭及進程推進順序非法
23.死鎖的4個必要條件答案:互斥、請求保持、不可剝奪、環路
24.死鎖的處理答案:鴕鳥策略、預防策略、避免策略、檢測與解除死鎖
25. 操作系統中進程調度策略有哪幾種?答案:FCFS(先來先服務),優先順序,時間片輪轉,多級反饋
26.類的靜態成員和非靜態成員有何區別?答案:類的靜態成員每個類只有一個,非靜態成員每個對象一個
27.純虛函數如何定義?使用時應注意什麼?答案:virtual void f()=0; 是介面,子類必須要實現
28.數組和鏈表的區別答案:數組:數據順序存儲,固定大小連表:數據可以隨機存儲,大小可動態改變
29.ISO的七層模型是什麼?tcp/udp是屬於哪一層?tcp/udp有何優缺點?答案:應用層表示層會話層運輸層網路層物理鏈路層物理層 tcp /udp屬於運輸層 TCP 服務提供了數據流傳輸、可靠性、有效流控制、全雙工操作和多路復用技術等。與 TCP 不同, UDP 並不提供對 IP 協議的可靠機制、流控制以及錯誤恢復功能等。由於 UDP 比較簡單, UDP 頭包含很少的位元組,比 TCP 負載消耗少。 tcp: 提供穩定的傳輸服務,有流量控制,缺點是包頭大,冗餘性不好 udp: 不提供穩定的服務,包頭小,開銷小
30:(void *)ptr 和 (*(void**))ptr的結果是否相同?其中ptr為同一個指針答案:.(void *)ptr 和 (*(void**))ptr值是相同的
31:int main() { int x=3; printf("%d",x); return 1; } 問函數既然不會被其它函數調用,為什麼要返回1?答案:mian中,c標准認為0表示成功,非0表示錯誤。具體的值是某中具體出錯信息
32,要對絕對地址0x100000賦值,我們可以用 (unsigned int*)0x100000 = 1234; 那麼要是想讓程序跳轉到絕對地址是0x100000去執行,應該怎麼做?答案:*((void (*)( ))0x100000 ) ( ); 首先要將0x100000強制轉換成函數指針,即: (void (*)())0x100000 然後再調用它: *((void (*)())0x100000)(); 用typedef可以看得更直觀些: typedef void(*)() voidFuncPtr; *((voidFuncPtr)0x100000)();
33,已知一個數組table,用一個宏定義,求出數據的元素個數答案:#define NTBL #define NTBL (sizeof(table)/sizeof(table[0]))
34。線程與進程的區別和聯系? 線程是否具有相同的堆棧? dll是否有獨立的堆棧? 答案:進程是死的,只是一些資源的集合,真正的程序執行都是線程來完成的,程序啟動的時候操作系統就幫你創建了一個主線程。每個線程有自己的堆棧。 DLL中有沒有獨立的堆棧,這個問題不好回答,或者說這個問題本身是否有問題。因為DLL中的代碼是被某些線程所執行,只有線程擁有堆棧,如果DLL中的代碼是EXE中的線程所調用,那麼這個時候是不是說這個DLL沒有自己獨立的堆棧?如果DLL中的代碼是由DLL自己創建的線程所執行,那麼是不是說DLL有獨立的堆棧?以上講的是堆棧,如果對於堆來說,每個DLL有自己的堆,所以如果是從DLL中動態分配的內存,最好是從DLL中刪除,如果你從DLL中分配內存,然後在EXE中,或者另外一個DLL中刪除,很有可能導致程序崩潰
35。unsigned short A = 10; printf("~A = %u\n", ~A); char c=128; printf("c=%d\n",c); 輸出多少?並分析過程答案:第一題,~A =0xfffffff5,int值為-11,但輸出的是uint。所以輸出4294967285 第二題,c=0x10,輸出的是int,最高位為1,是負數,所以它的值就是0x00的補碼就是128,所以輸出-128。這兩道題都是在考察二進制向int或uint轉換時的最高位處理。
(二)
1. -1,2,7,28,,126請問28和126中間那個數是什麼?為什麼?答案:第一題的答案應該是4^3-1=63 規律是n^3-1(當n為偶數0,2,4) n^3+1(當n為奇數1,3,5)
2.用兩個棧實現一個隊列的功能?要求給出演算法和思路!答案:設2個棧為A,B, 一開始均為空. 入隊: 將新元素push入棧A; 出隊: (1)判斷棧B是否為空; (2)如果不為空,則將棧A中所有元素依次pop出並push到棧B; (3)將棧B的棧頂元素pop出;這樣實現的隊列入隊和出隊的平攤復雜度都還是O(1), 比上面的幾種方法要好。
3.在c語言庫函數中將一個字元轉換成整型的函數是atol()嗎,這個函數的原型是什麼?答案:函數名: atol 功能: 把字元串轉換成長整型數用法: long atol(const char *nptr); 程序例: #include <stdlib.h> #include <stdio.h> int main(void) { long l; char *str = "98765432"; l = atol(lstr); printf("string = %s integer = %ld\n", str, l); return(0); }
4。對於一個頻繁使用的短小函數,在C語言中應用什麼實現,在C++中應用什麼實現? 答案:c用宏定義,c++用inline
5。直接鏈接兩個信令點的一組鏈路稱作什麼? 答案:PPP點到點連接
7。軟體測試都有那些種類? 答案:黑盒:針對系統功能的測試 白合:測試函數功能,各函數介面
8。確定模塊的功能和模塊的介面是在軟體設計的那個隊段完成的? 答案:概要設計階段
9。enum string { x1, x2, x3=10, x4, x5, }x; 問x;答案:取值在0。1。10。11。12中的一個
10。unsigned char *p1; unsigned long *p2; p1=(unsigned char *)0x801000; p2=(unsigned long *)0x810000; 請問p1+5= ; p2+5= ; 答案:801005; 810014。不要忘記了這個是16進制的數字,p2要加20變為16進制就是14 選擇題: 1.Ethternet鏈接到Internet用到以下那個協議? A.HDLC;B.ARP;C.UDP;D.TCP;E.ID 2.屬於網路層協議的是: A.TCP;B.IP;C.ICMP;D.X.25 3.Windows消息調度機制是: A.指令隊列;B.指令堆棧;C.消息隊列;D.消息堆棧; 答案:b,a,c
四.找錯題:
1.請問下面程序有什麼錯誤? int a[60][250][1000],i,j,k; for(k=0;k <=1000;k++) for(j=0;j <250;j++) for(i=0;i <60;i++) a[i][j][k]=0; 答案:把循環語句內外換一下
2。以下是求一個數的平方的程序,請找出錯誤: #define SQUARE(a) ((a)*(a)) int a=5; int b; b=SQUARE(a++); 答案:這個沒有問題,s(a++),就是((a++)×(a++))唯一要注意的就是計算後a=7了 3。typedef unsigned char BYTE int examply_fun(BYTE gt_len; BYTE *gt_code) { BYTE *gt_buf; gt_buf=(BYTE *)MALLOC(Max_GT_Length); ...... if(gt_len>Max_GT_Length) { return GT_Length_ERROR; } ....... } 答案:要釋放內存問答題: 1.IP Phone的原理是什麼? 答案:IPV6 2.TCP/IP通信建立的過程怎樣,埠有什麼作用?答案:三次握手,確定是哪個應用程序使用該協議(三)
1、局部變數能否和全局變數重名?答案:能,局部會屏蔽全局。要用全局變數,需要使用"::" 局部變數可以與全局變數同名,在函數內引用這個變數時,會用到同名的局部變數,而不會用到全局變數。對於有些編譯器而言,在同一個函數內可以定義多個同名的局部變數,比如在兩個循環體內都定義一個同名的局部變數,而那個局部變數的作用域就在那個循環體內
2、如何引用一個已經定義過的全局變數?答案:extern 可以用引用頭文件的方式,也可以用extern關鍵字,如果用引用頭文件方式來引用某個在頭文件中聲明的全局變理,假定你將那個變寫錯了,那麼在編譯期間會報錯,如果你用extern方式引用時,假定你犯了同樣的錯誤,那麼在編譯期間不會報錯,而在連接期間報錯
3、全局變數可不可以定義在可被多個.C文件包含的頭文件中?為什麼?答案:可以,在不同的C文件中以static形式來聲明同名全局變數。可以在不同的C文件中聲明同名的全局變數,前提是其中只能有一個C文件中對此變數賦初值,此時連接不會出錯
4、語句for( ;1 ;)有什麼問題?它是什麼意思?答案:和while(1)相同。
5、do……while和while……do有什麼區別?答案:前一個循環一遍再判斷,後一個判斷以後再循環。
6、請寫出下列代碼的輸出內容#include <stdio.h> main() { int a,b,c,d; a=10; b=a++; c=++a; d=10*a++; printf("b,c,d:%d,%d,%d",b,c,d); return 0; } 答案:10,12,120 a=10; b=a++;//a=11 b=10 c=++a;//a=12 c=12 d=10*a++;//a=13 d=120
高級題
1、static全局變數與普通的全局變數有什麼區別?static局部變數和普通局部變數有什麼區別?static函數與普通函數有什麼區別?
答案:全局變數(外部變數)的說明之前再冠以static 就構成了靜態的全局變數。全局變數本身就是靜態存儲方式,靜態全局變數當然也是靜態存儲方式。這兩者在存儲方式上並無不同。這兩者的區別雖在於非靜態全局變數的作用域是整個源程序,當一個源程序由多個源文件組成時,非靜態的全局變數在各個源文件中都是有效的。而靜態全局變數則限制了其作用域,即只在定義該變數的源文件內有效,在同一源程序的其它源文件中不能使用它。由於靜態全局變數的作用域局限於一個源文件內,只能為該源文件內的函數公用,因此可以避免在其它源文件中引起錯誤。從以上分析可以看出,把局部變數改變為靜態變數後是改變了它的存儲方式即改變了它的生存期。把全局變數改變為靜態變數後是改變了它的作用域,限制了它的使用范圍。 static函數與普通函數作用域不同。僅在本文件。只在當前源文件中使用的函數應該說明為內部函數(static),內部函數應該在當前源文件中說明和定義。對於可在當前源文件以外使用的函數,應該在一個頭文件中說明,要使用這些函數的源文件要包含這個頭文件 static全局變數與普通的全局變數有什麼區別:static全局變數只初使化一次,防止在其他文件單元中被引用; static局部變數和普通局部變數有什麼區別:static局部變數只被初始化一次,下一次依據上一次結果值; static函數與普通函數有什麼區別:static函數在內存中只有一份,普通函數在每個被調用中維持一份拷貝
2、程序的局部變數存在於()中,全局變數存在於()中,動態申請數據存在於()中。
答案:棧;靜態區;堆 3、設有以下說明和定義: typedef union {long i; int k[5]; char c;} DATE; struct data { int cat; DATE cow; double dog;} too; DATE max; 則語句 printf("%d",sizeof(too)+sizeof(max));的執行結果是:______ 答案:DATE是一個union, 變數公用空間. 裡面最大的變數類型是int[5], 佔用20個位元組. 所以它的大小是20 data是一個struct, 每個變數分開佔用空間. 依次為int4 + DATE20 + double8 = 32. 所以結果是 20 + 32 = 52. 當然...在某些16位編輯器下, int可能是2位元組,那麼結果是 int2 + DATE10 + double8 = 20
4、隊列和棧有什麼區別?
答案:隊列先進先出,棧後進先出÷
5、這道題目出錯了,這里就不寫上了。
6、已知一個單向鏈表的頭,請寫出刪除其某一個結點的演算法,要求,先找到此結點,然後刪除。答案:slnodetype *Delete(slnodetype *Head,int key){}中if(Head->number==key) { Head=Pointer->next; free(Pointer); break; } Back = Pointer; Pointer=Pointer->next; if(Pointer->number==key) { Back->next=Pointer->next; free(Pointer); break; } void delete(Node* p) { if(Head = Node) while(p) }
7、請找出下面代碼中的所以錯誤說明:以下代碼是把一個字元串倒序,如「abcd」倒序後變為「dcba」
1、#include"string.h" 2、main() 3、{ 4、 char*src="hello,world"; 5、 char* dest=NULL; 6、 int len=strlen(src); 7、 dest=(char*)malloc(len); 8、 char* d=dest; 9、 char* s=src[len]; 10、 while(len--!=0) 11、 d++=s--; 12、 printf("%s",dest); 13、 return 0; 14、} 答案:還要加上#include <stdio.h> int main(){ char* src = "hello,world"; int len = strlen(src); char* dest = (char*)malloc((len+1)*sizeof(char)); //要為\0分配一個空間 char* d = dest; char* s = &src[len-1]; //指向最後一個字元 while( len-- != 0 ) *d++=*s--; *d = 0; //尾部要加\0 printf("%s\n",dest); free(dest);// 使用完,應當釋放空間,以免造成內存匯泄露 return 0; } 華為筆試題(3) 2006-09-29 19:41
一、判斷題(對的寫T,錯的寫F並說明原因,每小題4分,共20分)
1、有數組定義int a[2][2]={{1},{2,3}};則a[0][1]的值為0。( 正確)
2、int (*ptr) (),則ptr是一維數組的名字。(錯誤 int (*ptr) ();定義一個指向函數的指針變數 )
3、指針在任何情況下都可進行>, <,>=, <=,==運算。( 錯誤 )
4、switch(c) 語句中c可以是int ,long,char ,float ,unsigned int 類型。( 錯,不能用實形)
二、填空題(共30分)
1、在windows下,寫出運行結果,每空2分,共10分。 char str[ ]= "Hello"; char *p=str; int n=10; sizeof(str)=( ) sizeof(p)=( ) sizeof(n)=( ) void func(char str[100]){ } sizeof(str)=( ) 答案:6,4,4,4, 具體解釋請參看我的空間里的「C/C++程序員應聘試題剖析」
2、void getmemory(char **p, int num) { *p=(char *) malloc(num);} void test(void) { char *str=NULL; getmemory(&str,100); strcpy(str,"hello"); printf(str); } 運行test函數有什麼結果?( )10分 答案:輸出hello,但是發生內存泄漏。
3、設int arr[]={6,7,8,9,10}; int *ptr=arr; *(ptr++)+=123; printf("%d,%d",*ptr,*(++ptr)); ( ) 10分答案:8,
8。這道題目的意義不大,因為在不同的編譯器里printf的參數的方向是不一樣的,在vc6.0下是從有到左,這里先*(++ptr) 後*pt,於是結果為8,8
三、編程題(第一小題20,第二小題30分)
1、 不使用庫函數,編寫函數int strcmp(char *source, char *dest) 相等返回0,不等返回-1;
答案:一、 int strcmp(char *source, char *dest) { assert((source!=NULL)&&(dest!=NULL)); int i,j; for(i=0; source[i]==dest[i]; i++) { if(source[i]=='\0' && dest[i]=='\0') return 0; else return -1; } } 答案:二、 int strcmp(char *source, char *dest) { while ( (*source != '\0') && (*source == *dest)) { source++; dest++; } return ( (*source) - (*dest) ) ? -1 : 0; }
2、 寫一函數int fun(char *p)判斷一字元串是否為迴文,是返回1,不是返回0,出錯返回-1 答案:一、 int fun(char *p) { if(p==NULL) return -1; else { int length = 0; int i = 0; int judge = 1; length = strlen(p); for(i=0; i <length/2; i++) { if(p[i]!=p[length-1-i]) judge = 0; break; } if(judge == 0) return 0; else return 1; } } 答案:二、 int fun(char *p){ int len = strlen(p) - 1; char *q = p + len; if (!p) return -1; while (p < q) { if ((*p++) != (*q--)) return 0; } return 1;}

1.在OSI 7 層模型中,網路層的功能有( ) A.確保數據的傳送正確無誤 B.確定數據包如何轉發與路由 C.在信道上傳送比特流 D.糾錯與流控
2.FDDI 使用的是___區域網技術。( ) A.乙太網; B.快速乙太網; C.令牌環; D.令牌匯流排。
3.下面那種LAN 是應用CSMA/CD協議的() A.令牌環 B.FDDI C.ETHERNET D.NOVELL
4.TCP 和UDP 協議的相似之處是 ( ) A.面向連接的協議 B.面向非連接的協議 C.傳輸層協議 D.以上均不對 5.應用程序PING 發出的是___報文.( ) A.TCP 請求報文。 B.TCP 應答報文。 C.ICMP 請求報文。 D.ICMP 應答報文。
6.以下說法錯誤的是(多) ( ) A.中繼器是工作在物理層的設備 B.集線器和乙太網交換機工作在數據連路層 C.路由器是工作在網路層的設備 D.橋能隔離網路層廣播
7.當橋接收的分組的目的MAC地址在橋的映射表中沒有對應的表項時,採取的策略是( ) A.丟掉該分組 B.將該分組分片 C.向其他埠廣播該分組 D.以上答案均不對
8.LAN Switch 在網路層次模型中的地位( ) A.物理層 B.鏈路層 C.網路層 D.以上都不是
9.小於___的TCP/UDP埠號已保留與現有服務一一對應,此數字以上的埠號可自由分配。( ) A.199 B.100 C.1024 D.2048
10.當一台主機從一個網路移到另一個網路時,以下說法正確的是 ( ) A.必須改變它的IP 地址和MAC 地址 B.必須改變它的IP 地址,但不需改動MAC 地址 C.必須改變它的MAC 地址,但不需改動IP 地址 D.MAC 地址.IP 地址都不需改動答案:1.B; 2.C; 3.C; 4.C; 5.C; 6.BD; 7.C; 8.B; 9.C; 10.B.
華為筆試題(4) 2006-09-30 13:00
1. 找錯 void test1() { char string[10]; char* str1="0123456789"; strcpy(string, str1); } 答:表面上並且編譯都不會錯誤。但如果string數組原意表示的是字元串的話,那這個賦值就沒有達到意圖。最好定義為char string[11],這樣最後一個元素可以存儲字元串結尾符'\0'; void test2() { char string[10], str1[10]; for(int I=0; I <10;I++) { str1[I] ='a'; } strcpy(string, str1); } 答:strcpy使用錯誤,strcpy只有遇到字元串末尾的'\0'才會結束,而str1並沒有結尾標志,導致strcpy函數越界訪問,不妨讓str1[9]='\0',這樣就正常了。 void test3(char* str1) { char string[10]; if(strlen(str1) <=10) { strcpy(string, str1); } } 答:這又會出現第一道改錯題的錯誤了。strlen(str1)算出來的值是不包含結尾符'\0'的,如果str1剛好為10個字元+1結尾符,string就得不到結尾符了。可將strlen(str1) <=10改為strlen(str1) <10。
2. 找錯 #define MAX_SRM 256 DSN get_SRM_no() { static int SRM_no; int I; for(I=0;I <MAX_SRM;I++,SRM_no++) { SRM_no %= MAX_SRM; if(MY_SRM.state==IDLE) { break; } } if(I>=MAX_SRM) return (NULL_SRM); else return SRM_no; } 答:我不知道這段代碼的具體功能,但明顯有兩個錯誤 1,SRM_no沒有賦初值 2,由於static的聲明,使該函數成為不可重入(即不可預測結果)函數,因為SRM_no變數放在程序的全局存儲區中,每次調用的時候還可以保持原來的賦值。這里應該去掉static聲明。

⑼ 程序員面試金典 int val=str.charat是不是錯了

double val = 89823.093; String[] cn = { "零", "壹", "貳", "叄", "肆", "伍", "陸", "柒", "捌", "玖" }; String val_str = String.valueOf(val); String int_val_str = ""; String float_val_str = ""; if(val_str.indexOf(".") != -1){ int...

⑽ 《程序員面試金典(第5版)》epub下載在線閱讀全文,求百度網盤雲資源

《程序員面試金典(第5版)》([美]GayleLaakmannMcDowell)電子書網盤下載免費在線閱讀

鏈接: https://pan..com/s/13iXMFa3SS14p1obKirfGDw

提取碼: kw2a

書名:程序員面試金典(第5版)

豆瓣評分:8.9

作者:[美]GayleLaakmannMcDowell

出版社:人民郵電出版社

原作名:Cracking the coding interview:150 programming questions and solutions,fifth edition

譯者:李琳驍/漆犇

出版年:2013-11

頁數:372

內容簡介:

本書是原谷歌資深面試官的經驗之作,層層緊扣程序員面試的每一個環節,全面而詳盡地介紹了程序員應當如何應對面試,才能在面試中脫穎而出。第1~7 章主要涉及面試流程解析、面試官的幕後決策及可能提出的問題、面試前的准備工作、對面試結果的處理等內容;第8~9 章從數據結構、概念與演算法、知識類問題和附加面試題4 個方面,為讀者呈現了出自微軟、蘋果、谷歌等多家知名公司的150 道編程面試題,並針對每一道面試題目,分別給出了詳細的解決方案。

本書適合程序開發和設計人員閱讀。

作者簡介:

Gayle Laakmann McDwell

美國求職咨詢網站CareerCup.cm創始人兼CE,是一位著名軟體工程師,曾在微軟、蘋果與谷歌任職。早先,她自己就是一位十分成功的求職者,成功通過了微軟、谷歌、亞馬遜、蘋果、IBM、高盛等多家最著名企業極其嚴苛的面試過程。工作以後,她又成為一位出色的面試官。在谷歌任職期間,她還是該公司資深面試官及招聘委員會成員,期間閱人無數,積累了相當豐富的面試經驗。除此書外,還著有《金領簡歷:敲開蘋果、微軟、谷歌的大門》。

譯者簡介:

李琳驍

從事嵌入式Linux內核/驅動開發,關注IT、開放源碼和安防監控等領域。業余時以技術翻譯為樂,時而客串編輯,好為愛書挑錯,渴求完美,卻也常因「小」失大,不得讀書要領。翻譯或參與翻譯了《Linux命令詳解手冊》《編程人生》《編程大師訪談錄》等圖書。網路ID為leal,管理Vim、Andrid等豆瓣小組,個人站點:http://linxia.net。

漆犇

畢業於中國地質大學,擁有十餘年軟體開發、測試及流程管理經驗,曾翻譯出版了《Linux/Unix設計思想》《金領簡歷 : 敲開蘋果、微軟、谷歌的大門》等書。目前定居於美國西雅圖,在微軟Windws Phne開發中心從事與WP應用開發者相關的項目管理事務。

閱讀全文

與程序員面試金典代碼相關的資料

熱點內容
全網介面vip影視解析源碼 瀏覽:916
如何破解伺服器遠程密碼錯誤 瀏覽:377
平安深圳app如何實名認證 瀏覽:500
linux網路監控軟體 瀏覽:889
內網伺服器如何上傳文件 瀏覽:140
程序員在你心中是什麼 瀏覽:1
蘋果手機怎麼找回app賬號 瀏覽:466
房屋中介網站源碼 瀏覽:29
命運格數演算法 瀏覽:852
ets3編程 瀏覽:730
怎麼製作音樂相冊的文件夾 瀏覽:566
寧夏重加密硅灰用法 瀏覽:231
70個4相乘的簡便演算法 瀏覽:291
安卓手機沒有機身存儲了怎麼辦 瀏覽:314
輸入法文件夾不能用 瀏覽:83
發單買多大的雲伺服器 瀏覽:331
特價雲伺服器如何注冊 瀏覽:296
安卓手機賬戶忘記密碼怎麼解鎖 瀏覽:821
如何用健身app確定一個特工 瀏覽:911
多級壓縮的原理 瀏覽:864