張壁錦--IT筆試、面試技術(shù)題分享會(huì).ppt_第1頁
張壁錦--IT筆試、面試技術(shù)題分享會(huì).ppt_第2頁
張壁錦--IT筆試、面試技術(shù)題分享會(huì).ppt_第3頁
張壁錦--IT筆試、面試技術(shù)題分享會(huì).ppt_第4頁
張壁錦--IT筆試、面試技術(shù)題分享會(huì).ppt_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、筆試、面試經(jīng)歷交流會(huì),-張壁錦,筆試題目,行測邏輯題 基礎(chǔ)知識點(diǎn)考查題 編碼題 逆天的題目,基礎(chǔ)知識點(diǎn)考查題,指針和引用的關(guān)系 Const Volition Static Extern c 內(nèi)聯(lián)函數(shù)和宏定義,指針和引用的區(qū)別?,1、從現(xiàn)象上看:指針在運(yùn)行時(shí)可以改變其所指向的值,而引用一旦和某個(gè)對象綁定后就不再改變。2、從內(nèi)存分配上看:程序?yàn)橹羔樧兞糠峙鋬?nèi)存區(qū)域,而引用不分配內(nèi)存區(qū)域。3、從編譯上看:程序在編譯時(shí)分別將指針和引用添加到符號表上,符號表上記錄的是變量名及變量所對應(yīng)地址。指針變量在符號表上對應(yīng)的地址值為指針變量的地址值,而引用在符號表上對應(yīng)的地址值為引用對象的地址值。符號表生成后就不

2、會(huì)再改,因此指針可以改變指向的對象(指針變量中的值可以改),而引用對象不能改。 引用:一個(gè)變量的別名,為什么引入別名呢?原因是我們想定義一個(gè)變量,他共享另一個(gè)變量的內(nèi)存空間,使用別名無疑是一個(gè)好的選擇。變量是什么?是一個(gè)內(nèi)存空間的名字,如果我們給這個(gè)內(nèi)存空間在起另外一個(gè)名字,那就是能夠共享這個(gè)內(nèi)存了,引用(別名)的由此而來。指針:指向另一個(gè)內(nèi)存空間的變量,我們可以通過它來索引另一個(gè)內(nèi)存空間的內(nèi)容,本身有自己的內(nèi)存空間。,Const(只讀),const修飾符可以把對象轉(zhuǎn)變成常數(shù)對象,意思就是說利用const進(jìn)行修飾的變量的值在程序的任意位置將不能再被修改,就如同常數(shù)一樣使用! 在C語言中,con

3、st的意思是“一個(gè)不能被改變的普通變量”,它總是占用存儲空間而且它的名字是全局的。C編譯器不能把const堪稱一個(gè)編譯器間的常量。所以在C中你可以這么寫: const int bufsize;/不賦值。 但不能這么寫: cosnt bufsize = 100; char bufbufsize; /因?yàn)閎ufsize不是常量。 但是在C+里,上面兩種情況正好反過來。在C+里const修改的量表示常量,必須在初始化時(shí)賦值,并且可以作為數(shù)據(jù)的維數(shù),堆與棧的區(qū)別,heap area存放程序的動(dòng)態(tài)數(shù)據(jù) stack area存放程序的局部數(shù)據(jù) 1、棧區(qū)(stack) 由編譯器自動(dòng)分配釋放 ,存放函數(shù)的參數(shù)

4、值,局部變量的值等。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧。地址是由高向低減少的 2、堆區(qū)(heap) 一般由程序員分配釋放, 若程序員不釋放,程序結(jié)束時(shí)可能由OS回收 。注意它與數(shù)據(jù)結(jié)構(gòu)中的堆是兩回事,分配方式倒是類似于鏈表,呵呵。地址是由低向高增長的,Extern “C”是由提供的一個(gè)連接交換指定符號,用于告訴這段代碼是函數(shù)。這是因?yàn)镃+編譯后庫中函數(shù)名會(huì)變得很長,與C生成的不一致,造成不能直接調(diào)用C函數(shù),加上extren “c”后,C+就能直接調(diào)用C函數(shù)了。 Extern “C”主要使用正規(guī)DLL函數(shù)的引用和導(dǎo)出 和 在C+包含C函數(shù)或C頭文件時(shí)使用。使用時(shí)在前面加上extern “c” 關(guān)鍵字

5、即可 extern是C/C+語言中表明函數(shù)和全局變量作用范圍(可見性)的關(guān)鍵字,該關(guān)鍵字告訴編譯器,其聲明的函數(shù)和變量可以在本模塊或其它模塊中使用。記住,下列語句: externinta; 僅僅是一個(gè)變量的聲明,其并不是在定義變量a,并未為a分配內(nèi)存空間。變量a在所有模塊中作為一種全局變量只能被定義一次,否則會(huì)出現(xiàn)連接錯(cuò)誤。通常,在模塊的頭文件中對本模塊提供給其它模塊引用的函數(shù)和全局變量以關(guān)鍵字extern聲明。例如,如果模塊B欲引用該模塊A中定義的全局變量和函數(shù)時(shí)只需包含模塊A的頭文件即可。這樣,模塊B中調(diào)用模塊A中的函數(shù)時(shí),在編譯階段,模塊B雖然找不到該函數(shù),但是并不會(huì)報(bào)錯(cuò);它會(huì)在連接階段

6、中從模塊A編譯生成的目標(biāo)代碼中找到此函數(shù)。,static關(guān)鍵字,在函數(shù)體,一個(gè)被聲明為靜態(tài)的變量在這一函數(shù)被調(diào)用過程中維持其值不變。 在模塊內(nèi)(但在函數(shù)體外),一個(gè)被聲明為靜態(tài)的變量可以被模塊內(nèi)所用函數(shù)訪問,但不能被模塊外其它函數(shù)訪問。它是一個(gè)本地的全局變量。 在模塊內(nèi),一個(gè)被聲明為靜態(tài)的函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用。那就是,這個(gè)函數(shù)被限制在聲明它的模塊的本地范圍內(nèi)使用。,與extern對應(yīng)的關(guān)鍵字是static,被它修飾的全局變量和函數(shù)只能在本模塊中使用。因此,一個(gè)函數(shù)或變量只可能被本模塊使用時(shí),其不可能被extern“C”修飾。,volatile,一個(gè)定義為volatile的變量是說

7、這變量可能會(huì)被意想不到地改變,這樣,編譯器就不會(huì)去假設(shè)這個(gè)變量的值了。精確地說就是,優(yōu)化器在用到這個(gè)變量時(shí)必須每次都小心地重新讀取這個(gè)變量的值,而不是使用保存在寄存器里的備份。下面是volatile變量的幾個(gè)例子: 1). 并行設(shè)備的硬件寄存器(如:狀態(tài)寄存器) 2). 一個(gè)中斷服務(wù)子程序中會(huì)訪問到的非自動(dòng)變量(Non-automatic variables) 3). 多線程應(yīng)用中被幾個(gè)任務(wù)共享的變量,用變量a給出下面的定義,a) 一個(gè)整型數(shù)(An integer) b) 一個(gè)指向整型數(shù)的指針(A pointer to an integer) c) 一個(gè)指向指針的的指針,它指向的指針是指向一個(gè)

8、整型數(shù)(A pointer to a pointer to an integer) d) 一個(gè)有10個(gè)整型數(shù)的數(shù)組(An array of 10 integers) e) 一個(gè)有10個(gè)指針的數(shù)組,該指針是指向一個(gè)整型數(shù)的(An array of 10 pointers to integers) f) 一個(gè)指向有10個(gè)整型數(shù)數(shù)組的指針(A pointer to an array of 10 integers) g) 一個(gè)指向函數(shù)的指針,該函數(shù)有一個(gè)整型參數(shù)并返回一個(gè)整型數(shù)(A pointer to a function that takes an integer as an argument a

9、nd returns an integer) h) 一個(gè)有10個(gè)指針的數(shù)組,該指針指向一個(gè)函數(shù),該函數(shù)有一個(gè)整型參數(shù)并返回一個(gè)整型數(shù)( An array of ten pointers to functions that take an integer argument and return an integer ),a) int a; / An integer b) int *a; / A pointer to an integer c) int *a; / A pointer to a pointer to an integer d) int a10; / An array of 10 i

10、ntegers e) int *a10; / An array of 10 pointers to integers f) int (*a)10; / A pointer to an array of 10 integers g) int (*a)(int); / A pointer to a function a that takes an integer argument and returns an integer h) int (*a10)(int); / An array of 10 pointers to functions that take an integer argumen

11、t and return an integer,數(shù)據(jù)結(jié)構(gòu),鏈表單鏈表、雙鏈表、循環(huán)鏈表 隊(duì)列 棧 堆 樹 排序,字符串,字符串的查找強(qiáng)大的和諧 不用庫函數(shù),寫出相同的結(jié)果,都要懂一點(diǎn)點(diǎn),操作系統(tǒng)進(jìn)程與線程的區(qū)別與聯(lián)系、pv操作、同步、死鎖、兩個(gè)進(jìn)程間的通信方式。 軟件工程各種軟件開發(fā)模型 軟件測試各種測試方法、(黑白盒)測試用例的設(shè)計(jì) 數(shù)據(jù)庫sql語句的使用 計(jì)算機(jī)網(wǎng)絡(luò),智力題,屋里的三個(gè)燈泡分別由哪個(gè)開關(guān)控制 三架飛機(jī)環(huán)游世界 用火柴和兩根繩子測量45分鐘之類的題目,1.1有A、B、C、D四個(gè)人,要在夜里過一座橋。 他們通過這座橋分別需要耗時(shí)1、2、5、10分鐘,只有一支手電,并且同時(shí)最多只

12、能兩個(gè)人一起過橋。 請問,如何安排,能夠在最短時(shí)間內(nèi)內(nèi)這四個(gè)人都過橋?,一普查員問一女人,“你有多少個(gè)孩子,他們多少歲?”女人回答:“我有三個(gè)孩子,他們的歲數(shù)相乘是36,歲數(shù)相加就等于旁邊屋的門牌號碼?!捌詹閱T立刻走到旁邊屋,看了一看,回來說:“我還需要多少資料?!迸嘶卮穑骸拔椰F(xiàn)在很忙,我最大的孩子正在樓上睡覺?!逼詹閱T說:”謝謝,我己知道了?!眴栴}:那三個(gè)孩子的歲數(shù)是多少。,36 = 1 2 2 3 3所有的可能為1,1,36;sum = 381,2,18;sum = 211,3,12;sum = 161,4,9;sum = 141,6,6;sum = 132,2,9;sum = 132,

13、3,6;sum = 113,3,4;sum = 10由于普查員知道了年齡和之后還是不能確定每個(gè)孩子的年齡,所以可能性為1,6,6;sum = 132,2,9;sum = 13由于最大(暗含只有一個(gè)最大)的孩子在睡覺,所以只可能是2,2,9;sum = 13,徐老師的生日,小宇和玉鵬都是徐老師的學(xué)生,徐老師的生日是M月N日,2人都知道徐老師的生日 是下列10組中的一天,徐老師把M值告訴了小宇,把N值告訴了玉鵬,徐老師問他們知道他的生日是那一天嗎? 3月4日 3月5日 3月8日 6月4日 6月7日 9月1日 9月5日 12月1日 12月2日 12月8日 小宇說:如果我不知道的話,玉鵬肯定也不知道

14、玉鵬說:本來我也不知道,但是現(xiàn)在我知道了 小宇說:哦,那我也知道了 請根據(jù)以上對話推斷出徐老師的生日是哪一天,由題意可知, 老師告訴小宇的月份數(shù)字是3、6、9、12之一, 老師告訴玉鵬的日期數(shù)字是1、2、4、5、7、8之一, 小宇說:“如果我不知道的話,玉鵬肯定也不知道” 看附圖1,在十個(gè)可能的生日中 月份中3、6、9、12都有重復(fù), 日期中1、4、5、8有重復(fù),2、7沒有重復(fù), (1)小宇自己不知道自己是清楚的,如果小宇知道的月份數(shù)字是6,那么,在小宇看來,玉鵬就有可能知道老師的生日,因?yàn)槔蠋熆赡芨嬖V玉鵬日期是7,而含有7日的生日是唯一的,只有6月7日,所以,小宇知道的月份數(shù)字不是6; (2

15、)同樣,如果小宇知道的月份數(shù)字是12,那么,在小宇看來,玉鵬也有可能知道老師的生日,因?yàn)槔蠋熡锌赡芨嬖V玉鵬日期是2,而含有2日的生日也是唯一的,只有12月2日,所以,小宇知道的數(shù)字也不是12; 既然小宇確定玉鵬不知道,就說明小宇知道的月份數(shù)字不是6、12之一,而是3、9之一。 玉鵬說:“本來我也不知道,但是現(xiàn)在我知道了” 看附圖2,在3月4日、3月5日、3月8日、9月1日、9月5日這五個(gè)可能的生日中 重復(fù)一下,如果老師告訴玉鵬的日期數(shù)字是2,那么玉鵬就可以知道老師的生日是12月2日,因?yàn)楹?日的生日是唯一的,只有12月2日;如果老師告訴玉鵬的日期數(shù)字是7,那么玉鵬就可以知道老師的生日是6月7

16、日,因?yàn)楹?日的生日也是唯一的,只有6月7日;由于玉鵬本來不知道老師的生日,所以,老師告訴玉鵬的日期數(shù)字是1、4、5、8之一。 由于小宇的話向玉鵬傳達(dá)了月份只能是3、9之一的信息,然后玉鵬立刻就知道了老師的生日,那么,生日不是5日,因?yàn)槿绻帐?日,可能的生日既有3月5日,也有9月5日,這樣,玉鵬就不能斷定老師的生日月份是3月還是9月,從而不會(huì)立刻唯一地確定老師的生日。至此,生日可能是3月4日、3月8日、9月1日之一,由于玉鵬知道生日日期,所以,就旁觀者所知道的來說,生日可能是這三個(gè)中的任何一個(gè)。 小宇說:哦,那我也知道了 由于可能的生日有三個(gè):3月4日、3月8日、9月1日,對于小宇而言,月份是他已經(jīng)知道的,他只需要知道日期就可以知道老師的生日,由于小宇通過玉鵬的發(fā)言就可以知道老師的生日,說

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論