日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

TX相关

發(fā)布時(shí)間:2023/12/16 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TX相关 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

3. TCP的三次握手

4. 現(xiàn)在的最新技術(shù),多線程,數(shù)據(jù)庫(kù),緩沖技術(shù)

5. 未來五年的職業(yè)規(guī)劃

6. 熟不熟悉網(wǎng)絡(luò)編程,

7. TCP靠什么來保證數(shù)據(jù)傳輸?shù)目煽?#xff1b;

8. 說一下,客戶端和服務(wù)器端用socket的通信過程;進(jìn)程間通信的方式,你都用過哪些來寫進(jìn)程間通信;

9. 關(guān)于項(xiàng)目的各種問題,項(xiàng)目中有沒有用緩沖技術(shù),并介紹一下;

10. 數(shù)據(jù)庫(kù)中的事務(wù)概念和作用,有什么性質(zhì),原子性通過什么來體現(xiàn)的;

11. 為什么要建立索引;

12. 會(huì)不會(huì)算法和數(shù)據(jù)結(jié)構(gòu)

?

2. 針對(duì)簡(jiǎn)歷上的內(nèi)容提了一些問題:做過哪些項(xiàng)目?印象最深的項(xiàng)目是哪個(gè)?那個(gè)項(xiàng)目采用的是什么架構(gòu),設(shè)計(jì)思想等等

3. 熟不熟悉linux,有哪些指令,邊寫邊解釋下;TCP和UDP的區(qū)別,TCP的三次握手,socket編程,寫一個(gè)簡(jiǎn)單的socket通信思路;

4. 用過哪些數(shù)據(jù)庫(kù);什么是索引,它有什么作用;

5. 問了下現(xiàn)在最新的技術(shù),比如云計(jì)算之類的,還有海量數(shù)據(jù)處理的一些技術(shù),

6. 進(jìn)程間通信的方式,有沒有具體使用過那些通信方式;有沒有用過多線程;

7. 快速寫出冒泡排序。

Linux的同步機(jī)制從2.0到2.6以來不斷發(fā)展完善。從最初的原子操作,到后來的信號(hào)量,從大內(nèi)核鎖到今天的自旋鎖。這些同步機(jī)制的發(fā)展伴隨Linux從單處理器到對(duì)稱多處理器的過渡;
伴隨著從非搶占內(nèi)核到搶占內(nèi)核的過度。Linux的鎖機(jī)制越來越有效,也越來越復(fù)雜。

Linux的內(nèi)核鎖主要是自旋鎖和信號(hào)量。
自旋鎖最多只能被一個(gè)可執(zhí)行線程持有,如果一個(gè)執(zhí)行線程試圖請(qǐng)求一個(gè)已被爭(zhēng)用(已經(jīng)被持有)的自旋鎖,那么這個(gè)線程就會(huì)一直進(jìn)行忙循環(huán)——旋轉(zhuǎn)——等待鎖重新可用。要是鎖未被爭(zhēng)用,請(qǐng)求它的執(zhí)行線程便能立刻得到它并且繼續(xù)進(jìn)行。自旋鎖可以在任何時(shí)刻防止多于一個(gè)的執(zhí)行線程同時(shí)進(jìn)入臨界區(qū)。
Linux中的信號(hào)量是一種睡眠鎖。如果有一個(gè)任務(wù)試圖獲得一個(gè)已被持有的信號(hào)量時(shí),信號(hào)量會(huì)將其推入等待隊(duì)列,然后讓其睡眠。這時(shí)處理器獲得自由去執(zhí)行其它代碼。當(dāng)持有信號(hào)量的進(jìn)程將信號(hào)量釋放后,在等待隊(duì)列中的一個(gè)任務(wù)將被喚醒,從而便可以獲得這個(gè)信號(hào)量。

信號(hào)量的睡眠特性,使得信號(hào)量適用于鎖會(huì)被長(zhǎng)時(shí)間持有的情況;只能在進(jìn)程上下文中使用,因?yàn)橹袛嗌舷挛闹惺遣荒鼙徽{(diào)度的;另外當(dāng)代碼持有信號(hào)量時(shí),不可以再持有自旋鎖。

1.從 a.log 文件中提取包含“WARNING”或”FATAL”,同時(shí)不包含“IGNOR”的行,然后,提取以“:”分割的第五個(gè)字段?

grep?-E ‘WARNING|FATAL’ a.log?|?grep-v’IGNOR’?|?awk?-F?:?’{print $5 }’

2.添加一個(gè)新組為class01,然后,添加屬于這個(gè)組的30個(gè)用戶,用戶名的形式為stdXX,其中,XX從 01到 30?

#!/bin/bash
groupadd class01
for((i=1;i<=9;i++))
do

useradd std0$i?-G class01
done

for((i=10;i<=30;i++))
do

useradd std$i?-G class01
done

3.在每個(gè)月的第一天備份并壓縮/etc目錄下的所有內(nèi)容,存放在/root/backup目錄里,且文件名為如下形式y(tǒng)ymmdd_etc,yy為年,mm為月,dd為日。shell程序 fileback存放在/usr/bin 目錄下?
tar?-zcf?/root/backup/`date+%y%m%d`_etc?/etc
4.用shell編程,判斷一文件是不是字符設(shè)備文件,如果是將其拷貝到/dev目錄下?
#!/bin/bash
if?test$#?-ne1
then
echo
?”ERROR”
exit?1
fi
if?test?-c?$1
then
/
bin/cp -a?$1?/dev/
exit0
fi
exit
?1

5.某系統(tǒng)管理員需要每天做一定的重復(fù)工作,編制一個(gè)解決方案:
(1).從下午 4:50 刪除/abc 目錄下的全部子目錄和全部文件;
(2).從早上 8:00~下午 6:00每小時(shí)讀取/xyz目錄下x1 文件中每行第一個(gè)域的全部數(shù)據(jù)加入到/backup目錄下的 back01.txt文件內(nèi);
(3).每逢周一下午 5:50 將/data目錄下的所有目錄和文件歸檔并壓縮為文件backup.tar.gz;
(4).在下午 5:55 將IDE接口的CD-ROM缷載(假設(shè)CD-ROM的設(shè)備名為 hdc);
(5).在早上 8:00 開機(jī)后啟動(dòng)。

使用計(jì)劃任務(wù)來完成:
crontab-e
———————–
50 16?*?*?*?rm-rf/abc/*
00 08-18?*?*?*?awk ‘{print$1 }’?/xyz/x1?>>?/backup/back01.txt
50 17?*?*?01 tar-zcf/backup/backup.tar.gz?/data
55 17?*?*?*?umount/dev/hdc
———————–
設(shè)定BIOS每日上午 08:00開機(jī)

騰訊筆試題:const的含義及實(shí)現(xiàn)機(jī)制
const的含義及實(shí)現(xiàn)機(jī)制,比如:const int i,是怎么做到i只可讀的?
const用來說明所定義的變量是只讀的。
這些在編譯期間完成,編譯器可能使用常數(shù)直接替換掉對(duì)此變量的引用。
更多閱讀:

http://www.92ask.net/Archive/?action=show&id=18

初探編譯器static、const之實(shí)現(xiàn)原理
騰訊筆試題:買200返100優(yōu)惠券,實(shí)際上折扣是多少?
到商店里買200的商品返還100優(yōu)惠券(可以在本商店代替現(xiàn)金)。請(qǐng)問實(shí)際上折扣是多少?
由于優(yōu)惠券可以代替現(xiàn)金,所以可以使用200元優(yōu)惠券買東西,然后還可以獲得100元的優(yōu)惠券。
假設(shè)開始時(shí)花了x元,那么可以買到 x + x/2 + x/4 +?…的東西。所以實(shí)際上折扣是50%.(當(dāng)然,大部分時(shí)候很難一直兌換下去,所以50%是折扣的上限)
如果使用優(yōu)惠券買東西不能獲得新的優(yōu)惠券,那么
總過花去了200元,可以買到200+100元的商品,所以實(shí)際折扣為 200/300 = 67%.
騰訊筆試題:tcp三次握手的過程,accept發(fā)生在三次握手哪個(gè)階段?
accept發(fā)生在三次握手之后。
第一次握手:客戶端發(fā)送syn包(syn=j)到服務(wù)器。
第二次握手:服務(wù)器收到syn包,必須確認(rèn)客戶的SYN(ack=j+1),同時(shí)自己也發(fā)送一個(gè)ASK包(ask=k)。
第三次握手:客戶端收到服務(wù)器的SYN+ACK包,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1)。
三次握手完成后,客戶端和服務(wù)器就建立了tcp連接。這時(shí)可以調(diào)用accept函數(shù)獲得此連接。
騰訊筆試題:用UDP協(xié)議通訊時(shí)怎樣得知目標(biāo)機(jī)是否獲得了數(shù)據(jù)包
用UDP協(xié)議通訊時(shí)怎樣得知目標(biāo)機(jī)是否獲得了數(shù)據(jù)包?
可以在每個(gè)數(shù)據(jù)包中插入一個(gè)唯一的ID,比如timestamp或者遞增的int。
發(fā)送方在發(fā)送數(shù)據(jù)時(shí)將此ID和發(fā)送時(shí)間記錄在本地。
接收方在收到數(shù)據(jù)后將ID再發(fā)給發(fā)送方作為回應(yīng)。
發(fā)送方如果收到回應(yīng),則知道接收方已經(jīng)收到相應(yīng)的數(shù)據(jù)包;如果在指定時(shí)間內(nèi)沒有收到回應(yīng),則數(shù)據(jù)包可能丟失,需要重復(fù)上面的過程重新發(fā)送一次,直到確定對(duì)方收到。
關(guān)于UDP協(xié)議的簡(jiǎn)單介紹,可以參考

http://baike.baidu.com/view/30509.htm

騰訊筆試題:統(tǒng)計(jì)論壇在線人數(shù)分布
求一個(gè)論壇的在線人數(shù),假設(shè)有一個(gè)論壇,其注冊(cè)ID有兩億個(gè),每個(gè)ID從登陸到退出會(huì)向一個(gè)日志文件中記下登陸時(shí)間和退出時(shí)間,要求寫一個(gè)算法統(tǒng)計(jì)一天中論壇的用戶在線分布,取樣粒度為秒。
一天總共有 3600*24 = 86400秒。
定義一個(gè)長(zhǎng)度為86400的整數(shù)數(shù)組int delta[86400],每個(gè)整數(shù)對(duì)應(yīng)這一秒的人數(shù)變化值,可能為正也可能為負(fù)。開始時(shí)將數(shù)組元素都初始化為0。
然后依次讀入每個(gè)用戶的登錄時(shí)間和退出時(shí)間,將與登錄時(shí)間對(duì)應(yīng)的整數(shù)值加1,將與退出時(shí)間對(duì)應(yīng)的整數(shù)值減1。
這樣處理一遍后數(shù)組中存儲(chǔ)了每秒中的人數(shù)變化情況。
定義另外一個(gè)長(zhǎng)度為86400的整數(shù)數(shù)組int online_num[86400],每個(gè)整數(shù)對(duì)應(yīng)這一秒的論壇在線人數(shù)。
假設(shè)一天開始時(shí)論壇在線人數(shù)為0,則第1秒的人數(shù)online_num[0] = delta[0]。第n+1秒的人數(shù)online_num[n] = online_num[n-1] + delta[n]。
這樣我們就獲得了一天中任意時(shí)間的在線人數(shù)。
騰訊筆試題:從10G個(gè)數(shù)中找到中數(shù)
在一個(gè)文件中有 10G 個(gè)整數(shù),亂序排列,要求找出中位數(shù)。內(nèi)存限制為 2G。
不妨假設(shè)10G個(gè)整數(shù)是64bit的。
2G內(nèi)存可以存放256M個(gè)64bit整數(shù)。
我們可以將64bit的整數(shù)空間平均分成256M個(gè)取值范圍,用2G的內(nèi)存對(duì)每個(gè)取值范圍內(nèi)出現(xiàn)整數(shù)個(gè)數(shù)進(jìn)行統(tǒng)計(jì)。這樣遍歷一邊10G整數(shù)后,我們便知道中數(shù)在那個(gè)范圍內(nèi)出現(xiàn),以及這個(gè)范圍內(nèi)總共出現(xiàn)了多少個(gè)整數(shù)。
如果中數(shù)所在范圍出現(xiàn)的整數(shù)比較少,我們就可以對(duì)這個(gè)范圍內(nèi)的整數(shù)進(jìn)行排序,找到中數(shù)。如果這個(gè)范圍內(nèi)出現(xiàn)的整數(shù)比較多,我們還可以采用同樣的方法將此范圍再次分成多個(gè)更小的范圍(256M=2^28,所以最多需要3次就可以將此范圍縮小到1,也就找到了中數(shù))。
訊筆試題:兩個(gè)整數(shù)集合A和B,求其交集
兩個(gè)整數(shù)集合A和B,求其交集。
1. 讀取整數(shù)集合A中的整數(shù),將讀到的整數(shù)插入到map中,并將對(duì)應(yīng)的值設(shè)為1。
2. 讀取整數(shù)集合B中的整數(shù),如果該整數(shù)在map中并且值為1,則將此數(shù)加入到交集當(dāng)中,并將在map中的對(duì)應(yīng)值改為2。
通過更改map中的值,避免了將同樣的值輸出兩次。
騰訊筆試題:找出1到10w中沒有出現(xiàn)的兩個(gè)數(shù)字
有1到10w這10w個(gè)數(shù),去除2個(gè)并打亂次序,如何找出那兩個(gè)數(shù)?
申請(qǐng)10w個(gè)bit的空間,每個(gè)bit代表一個(gè)數(shù)字是否出現(xiàn)過。
開始時(shí)將這10w個(gè)bit都初始化為0,表示所有數(shù)字都沒有出現(xiàn)過。
然后依次讀入已經(jīng)打亂循序的數(shù)字,并將對(duì)應(yīng)的bit設(shè)為1。
當(dāng)處理完所有數(shù)字后,根據(jù)為0的bit得出沒有出現(xiàn)的數(shù)字。
首先計(jì)算1到10w的和,平方和。
然后計(jì)算給定數(shù)字的和,平方和。
兩次的到的數(shù)字相減,可以得到這兩個(gè)數(shù)字的和,平方和。
所以我們有
x + y = n
x^2 + y^2 = m
解方程可以得到x和y的值。
騰訊筆試題:需要多少只小白鼠才能在24小時(shí)內(nèi)找到毒藥
有1000瓶水,其中有一瓶有毒,小白鼠只要嘗一點(diǎn)帶毒的水24小時(shí)后就會(huì)死亡,至少要多少只小白鼠才能在24小時(shí)時(shí)鑒別出那瓶水有毒?
最容易想到的就是用1000只小白鼠,每只喝一瓶。但顯然這不是最好答案。
既然每只小白鼠喝一瓶不是最好答案,那就應(yīng)該每只小白鼠喝多瓶。那每只應(yīng)該喝多少瓶呢?
首先讓我們換種問法,如果有x只小白鼠,那么24小時(shí)內(nèi)可以從多少瓶水中找出那瓶有毒的?
由于每只小白鼠都只有死或者活這兩種結(jié)果,所以x只小白鼠最大可以表示2^x種結(jié)果。如果讓每種結(jié)果都對(duì)應(yīng)到某瓶水有毒,那么也就可以從2^x瓶水中找到有毒的那瓶水。那如何來實(shí)現(xiàn)這種對(duì)應(yīng)關(guān)系呢?
第一只小白鼠喝第1到2^(x-1)瓶,第二只小白鼠喝第1到第2^(x-2)和第2^(x-1)+1到第2^(x-1) + 2^(x-2)瓶….以此類推。
回到此題,總過1000瓶水,所以需要最少10只小白鼠。
騰訊筆試題:根據(jù)上排的數(shù)填寫下排的數(shù),并滿足要求。
根據(jù)上排給出十個(gè)數(shù),在其下排填出對(duì)應(yīng)的十個(gè)數(shù), 要求下排每個(gè)數(shù)都是上排對(duì)應(yīng)位置的數(shù)在下排出現(xiàn)的次數(shù)。上排的數(shù):0,1,2,3,4,5,6,7,8,9。
騰訊筆試題:判斷數(shù)字是否出現(xiàn)在40億個(gè)數(shù)中?
給40億個(gè)不重復(fù)的unsigned int的整數(shù),沒排過序的,然后再給幾個(gè)數(shù),如何快速判斷這幾個(gè)數(shù)是否在那40億個(gè)數(shù)當(dāng)中?
答案:
unsigned int 的取值范圍是0到2^32-1。我們可以申請(qǐng)連續(xù)的2^32/8=512M的內(nèi)存,用每一個(gè)bit對(duì)應(yīng)一個(gè)unsigned int數(shù)字。首先將512M內(nèi)存都初始化為0,然后每處理一個(gè)數(shù)字就將其對(duì)應(yīng)的bit設(shè)置為1。當(dāng)需要查詢時(shí),直接找到對(duì)應(yīng)bit,看其值是0還是1即可。

?

1、請(qǐng)定義一個(gè)宏,比較兩個(gè)數(shù)a、b?的大小,不能使用大于、小于、if?語句

2、如何輸出源文件的標(biāo)題和目前執(zhí)行行的行數(shù)

3、兩個(gè)數(shù)相乘,小數(shù)點(diǎn)后位數(shù)沒有限制,請(qǐng)寫一個(gè)高精度算法

4、寫一個(gè)病毒

5、有A、B、C、D?四個(gè)人,要在夜里過一座橋。他們通過這座橋分別需要

耗時(shí)1、2、5、10?分鐘,只有一支手電,并且同時(shí)最多只能兩個(gè)人一起過橋。

請(qǐng)問,如何安排,能夠在17?分鐘內(nèi)這四個(gè)人都過橋?

2005?年騰訊招聘

選擇題(60)

c/c++ os linux?方面的基礎(chǔ)知識(shí)c?的Sizeof?函數(shù)有好幾個(gè)!

程序填空(40)

1.(20) 4?空x5

不使用額外空間,將A,B?兩鏈表的元素交叉歸并

2.(20) 4?空x5

MFC?將樹序列化轉(zhuǎn)存在數(shù)組或鏈表中!

基本都是基礎(chǔ)題目,看來騰訊不準(zhǔn)備放棄那些有思想但是

還沒有開始苦練基本功的人,只涉及到語言問題和簡(jiǎn)單的

數(shù)據(jù)結(jié)構(gòu),其他的操作系統(tǒng),編譯原理,離散數(shù)學(xué),軟件

?

工程,計(jì)算機(jī)原理,體系結(jié)構(gòu)等等無一涉及,題目很多,

有1?個(gè)選擇題想不來起來是什么了,題號(hào)不與原試題相符

希望師弟師妹可以探討探討答案,從中學(xué)到筆試的經(jīng)驗(yàn)

聲明:以下問題僅供本校園網(wǎng)校內(nèi)師弟師妹為了考察自己學(xué)習(xí)的參考,不要

傳播

1?計(jì)算a^b<< 2 (運(yùn)算符優(yōu)先級(jí)問題)

2?根據(jù)先序中序求后序

3 a[3][4]哪個(gè)不能表示a[1][1]: *(&a[0][0]) *(*(a+1)+1) *(&a[1]+1)

*(&a[0][0]+4)

4 for(int i…)

for(int j…)

printf(i,j);

printf(j)

會(huì)出現(xiàn)什么問題

5 for(i=0;i<10;++i,sum+=i);的運(yùn)行結(jié)果

6 10?個(gè)數(shù)順序插入查找二叉樹,元素62?的比較次數(shù)

7 10?個(gè)數(shù)放入模10hash?鏈表,最大長(zhǎng)度是多少

8 fun((exp1,exp2),(exp3,exp4,exp5))有幾個(gè)實(shí)參

9?希爾冒泡快速插入哪個(gè)平均速度最快

10?二分查找是順序存儲(chǔ)鏈存儲(chǔ)按value?有序中的哪些

11?順序查找的平均時(shí)間

?

12 *p=NULL *p=new char[100] sizeof(p)各為多少

13?頻繁的插入刪除操作使用什么結(jié)構(gòu)比較合適,鏈表還是數(shù)組

14 enum?的聲明方式

其他1?個(gè)選擇暫時(shí)想不起來了

大題:

1?把字符串轉(zhuǎn)換為小寫,不成功返回NULL,成功返回新串

char* toLower(char* sSrcStr)

{

char* sDest= NULL;

if( __1___)

{

int j;

sLen = strlen(sSrcStr);

sDest = new [_______2_____];

if(*sDest == NULL)

return NULL;

sDest[sLen] = ‘\0′;

while(_____3____)

sDest[sLen] = toLowerChar(sSrcStr[sLen]);

}

return sDest;

}

2?把字符串轉(zhuǎn)換為整數(shù)例如:”-123″ -> -123

main()

{

…..

if( *string == ‘-’ )

n = ____1______;

else

n = num(string);

?

…..

}

int num(char* string)

{

for(;!(*string==0);string++)

{

int k;

k = __2_____;

j = –sLen;

while( __3__)

k = k * 10;

num = num + k;

}

return num;

}

附加題:

1 linux?下調(diào)試core?的命令,察看堆棧狀態(tài)命令

2?寫出socks?套接字服務(wù)端客戶端通訊程序

3?填空補(bǔ)全程序,按照我的理解是添入:win32?調(diào)入dll?的函數(shù)名查找函數(shù)

入口的函數(shù)名找到函數(shù)的調(diào)用形式把formView?加到singledoc?的聲明將

singledoc?加到app?的聲明

4?有關(guān)系s(sno,sname) c(cno,cname) sc(sno,cno,grade)

1?問上課程”db”的學(xué)生no

2?成績(jī)最高的學(xué)生號(hào)

3?每科大于90?分的人數(shù)

試一共60?分鐘,分發(fā)試卷和收回試卷費(fèi)時(shí)5?分鐘,實(shí)際考試時(shí)間55?分鐘。

?

?

?

選擇題36?道(都是5?個(gè)選項(xiàng)的),計(jì)算題14?道(一道題會(huì)有好幾個(gè)問),

題量比較大,我還有最后兩個(gè)空沒填寫,實(shí)在是沒時(shí)間了~~

題目考查的范圍比較全面,但是有所側(cè)重,例如:如果外匯相對(duì)于本國(guó)

貨幣升值,一般來說,本國(guó)的通貨膨脹率將會(huì)怎樣?下面就是5?個(gè)選項(xiàng)。

總體來說,試題本身難度不大,但是很費(fèi)時(shí)間,閱讀的速度非常重要,

邏輯判斷的能力要求很高,要求快速閱讀、快速判斷、快速計(jì)算,而且還不

能粗心導(dǎo)致計(jì)算失誤(我一般出現(xiàn)的情況就是計(jì)算失誤~~,希望這次不會(huì)出

現(xiàn)~~)

騰訊這次的試卷可能字體印刷的比較小了,我的視力是5.3?的,看上去

不會(huì)有任何問題,但是坐在我后面的老兄就不好了,完全是模糊的一片,不

斷的縮減和紙張之間的距離才能看到,可能騰訊公司在這方面的成本應(yīng)該適

當(dāng)放寬(也許也是一種測(cè)試吧,身體素質(zhì)的測(cè)試~~)

?

1.哪一個(gè)聲明是錯(cuò)誤的( )
char * const p = 0;
char const * p = 0;
const char * p = 0;

char * p const = 0;

2.下面的結(jié)構(gòu)體所占內(nèi)存是( )
#pragma pack(4)
struct {
unino {
char ch1;
double num;
} bbb;
char ch2;
}aaa;
#pragma pack()

3.x = 0xffffffff,則 x = (x&0xffff0000) >> 16 的結(jié)果是( )

4.#define TEST(x) (x*2+1),則 TEST(1+1)的結(jié)果是( )

5.有15個(gè)結(jié)點(diǎn)的滿二叉樹,葉子數(shù)是( )

6.程序片段的輸出結(jié)果( )
class A {
public:
A() { printf(“A1 “); }
~A() { printf(“A2 “); }
};
class B : public A {
public:
B() { printf(“B1 “); }
~B() { printf(“B2 “); }
};

B b = new B;
delete b;

7.int Func(const char *)的重載函數(shù)是( ) (選項(xiàng)略)

8.按順序A, B, C進(jìn)棧,出棧的結(jié)果是( )

9.程序片段的輸出結(jié)果( )
class A {
public:
virtual int func() { return 1; }
};
class B : public A {
public:
virtual int func() { return 2; }
};
A *a = new B;
printf(“%d %d\n”, a->func(), a->A::func());
delete a;

10.程序片段的執(zhí)行描述中正確的是( )
class A {
public:
virtual void func(A& ra);
};
class B : public A {
public:
virtual void func(B& rb);
};
B b;
A &a = b;
a.func(b);
(有點(diǎn)記不清了,反正俺錯(cuò)了這題,以為引用和指針是不同的…>_<)

11.關(guān)于哈希表特點(diǎn)錯(cuò)誤的是( ) (選項(xiàng)略)

12.函數(shù)功能描述正確的是( )
int whatido(char * str)
{
return *str ? whatido(++str)+1 : 0;
}
二、程序填空(5×8)

1.二叉樹的遍歷
2.靜態(tài)單鏈表Appand元素

三、附加題(20×3)
1.寫出3D的鏡象轉(zhuǎn)置矩陣(什么東東?看不懂題意…)
2.SQL的簡(jiǎn)單東東(俺全忘了…哭)
3.商場(chǎng)“買200送100”算折扣(還是不懂…)

?

c/c++ os linux 方面的基礎(chǔ)知識(shí) c的Sizeof函數(shù)有好幾個(gè)!

程序填空(40)

1.(20) 4空x5

不使用額外空間,將 A,B兩鏈表的元素交叉歸并

2.(20) 4空x5

MFC ?將樹序列化 轉(zhuǎn)存在數(shù)組或 鏈表中!

1.請(qǐng)定義一個(gè)宏,比較兩個(gè)數(shù)a、b的大小,不能使用大于、小于、if語句

// 這樣轉(zhuǎn)向定義應(yīng)該不算違規(guī)吧!^_^

#include “stdafx.h”

#include <string.h>

#include <iostream>

using namespace std;

#define Cmp(x,y) compare(x,y)

int compare( int a, int b)

{

a^=(1<<31); b^=(1<<31);

int i=31;

while ((i^-1) && !((a&(1<<i))^(b&(1<<i)))) ? ? i–;

return (i^-1)?(((a>>i)&1)?1:-1):0;

}

int _tmain()

{

int c;

c = Cmp(5,4);

cout<<c<<endl;

return 0;

}

jruv ? (~~~一葉落而知天下秋~~~) 的答案:

#define ? COMPARE(a,b) ? ((a)-(b)) ? ? ? ? //<0: ? a<b ? =0:a==b>0:a>b

2.如何輸出源文件的標(biāo)題和目前執(zhí)行行的行數(shù)

cout ? << ? “Filename ? ” ? << ? __FILE__ ? << ? ” ? Line ? ” ? << ? __LINE__ ? << ? endl;

3.兩個(gè)數(shù)相乘,小數(shù)點(diǎn)后位數(shù)沒有限制,請(qǐng)寫一個(gè)高精度算法

算法提示:

輸入 string a, string b; 計(jì)算string c=a*b; 返回 c;

1, ? ?紀(jì)錄小數(shù)點(diǎn)在a,b中的位置l1,l2, 則需要小數(shù)點(diǎn)后移動(dòng)位置數(shù)為l=length(a)+length(b)-l1-l2-2;

2, ? ?去掉a,b中的小數(shù)點(diǎn),(a,b小數(shù)點(diǎn)后移,使a,b變?yōu)檎麛?shù))

3, ? ?計(jì)算c=a*b; (同整數(shù)的大數(shù)相乘算法)

4, ? ?輸出c,(注意在輸出倒數(shù)第l個(gè)數(shù)時(shí),輸出一個(gè)小數(shù)點(diǎn)。若是輸出的數(shù)少于l個(gè),就補(bǔ)0)

du51(郁郁思揚(yáng))的答案:

變?yōu)檎麛?shù)求就行了.輸入的時(shí)候記一下,小數(shù)點(diǎn)位置..輸出再做點(diǎn)文章就行了.

下面的是大整數(shù)的運(yùn)算.

#include<iostream>

using namespace std;

#define MAX 10000

struct Node{

int data;

Node *next;

};

void output(Node *head)

{

if(!head->next&&!head->data)return;

output(head->next);

cout<<head->data;

}

void Mul(char *a,char *b,int pos)

{

char *ap=a,*bp=b;

Node *head=0;

head=new Node;head->data=0,head->next=0; ? //頭

Node *p,*q=head,*p1;

int temp=0,temp1,bbit;

while(*bp) ? ? ? ? ? ? ? ?//若乘數(shù)不為空 ,繼續(xù).

{

p=q->next;p1=q;

bbit=*bp-48; ? ? ? ? ?//把當(dāng)前位轉(zhuǎn)為整型

while(*ap||temp) ? ? ? ? ? ?//若被乘數(shù)不空,繼續(xù)

{

if(!p) ? ? ? ? ? ?//若要操作的結(jié)點(diǎn)為空,申請(qǐng)之

{

p=new Node;

p->data=0;

p->next=0;

p1->next=p;

}

if(*ap==0)temp1=temp;

else { temp1=(p1->data)+(*ap-48)*bbit+temp;ap++; }

p1->data=temp1%10; ? ?//留當(dāng)前位

temp=temp1/10; ? ?//進(jìn)位以int的形式留下.

p1=p;p=p->next; ? ? ? ? ? ? ? ? //被乘數(shù)到下一位

}

ap=a;bp++;q=q->next; ? ? ? ? ? ? ? ?//q進(jìn)下一位

}

p=head;

output(p); ? ? ? ? ? ? ? ? ? //顯示

cout<<endl;

while(head) ? ? ? ? ? ? ? ? //釋放空間

{

p=head->next;

delete head;

head=p;

}

}

int main()

{

cout<<”請(qǐng)輸入兩個(gè)數(shù)”<<endl;

char test1[MAX],test2[MAX];

cin.getline(test1,MAX,’\n’);

cin.getline(test2,MAX,’\n’);

Mul(strrev(test1),strrev(test2));

system(“PAUSE”);

return 0;

}

上面大整數(shù)已經(jīng)寫了.你加幾個(gè)東西就行了.

#include<iostream>

using namespace std;

#define MAX 10000

struct Node{

int data;

Node *next;

};

void output(Node *head,int pos)

{

if(!head->next&&!head->data)return;

output(head->next,pos-1);

cout<<head->data;

if(!pos)cout<<”.”;

}

void Mul(char *a,char *b,int pos)

{

char *ap=a,*bp=b;

Node *head=0;

head=new Node;head->data=0,head->next=0; ? //頭

Node *p,*q=head,*p1;

int temp=0,temp1,bbit;

while(*bp) ? ? ? ? ? ? ? ?//若乘數(shù)不為空 ,繼續(xù).

{

p=q->next;p1=q;

bbit=*bp-48; ? ? ? ? ?//把當(dāng)前位轉(zhuǎn)為整型

while(*ap||temp) ? ? ? ? ? ?//若被乘數(shù)不空,繼續(xù)

{

if(!p) ? ? ? ? ? ?//若要操作的結(jié)點(diǎn)為空,申請(qǐng)之

{

p=new Node;

p->data=0;

p->next=0;

p1->next=p;

}

if(*ap==0)temp1=temp;

else { temp1=(p1->data)+(*ap-48)*bbit+temp;ap++; }

p1->data=temp1%10; ? ?//留當(dāng)前位

temp=temp1/10; ? ?//進(jìn)位以int的形式留下.

p1=p;p=p->next; ? ? ? ? ? ? ? ? //被乘數(shù)到下一位

}

ap=a;bp++;q=q->next; ? ? ? ? ? ? ? ?//q進(jìn)下一位

}

p=head;

output(p,pos); ? ? ? ? ? ? ? ? ? //顯示

cout<<endl;

while(head) ? ? ? ? ? ? ? ? //釋放空間

{

p=head->next;

delete head;

head=p;

}

}

int main()

{

cout<<”請(qǐng)輸入兩個(gè)數(shù)”<<endl;

char test1[MAX],test2[MAX],*p;

int pos=0;

cin.getline(test1,MAX,’\n’);

cin.getline(test2,MAX,’\n’);

if(p=strchr(test1,’.'))

{

pos+=strlen(test1)-(p-test1)-1;

do

{

p++;

*(p-1)=*p;

}while(*p);

}

if(p=strchr(test2,’.'))

{

pos+=strlen(test2)-(p-test2)-1;

do

{

p++;

*(p-1)=*p;

}while(*p);

}

Mul(strrev(test1),strrev(test2),pos);

system(“PAUSE”);

return 0;

}

4.寫一個(gè)病毒

cout<<”一個(gè)病毒”<<endl;

(開玩笑的,沒搞過,^_^)

5.讓你在100000000個(gè)浮點(diǎn)數(shù)中找出最大的10000個(gè),要求時(shí)間復(fù)雜度優(yōu)。

//本算法使用快排,O(n*lg(n))

//最低可以找到線性算法,使用預(yù)先區(qū)域統(tǒng)計(jì)劃分!類試于構(gòu)造Quad Trees! 寫起來代碼會(huì)長(zhǎng)些!

#include <stdio.h>

#include <stdlib.h>

#define Max 100000000

int a[Max+10];

int cmp( const void *a, const void *b)

{

int *x = ( int *) a;

int *y = ( int *) b;

return *x-*y;

}

int main()

{

int n=0;

while (scanf(“%d”,&a[n])==1) ? ? n++;

qsort(a,n,4,cmp);

for ( int i=0;i<3;i++) ? ? printf(“%d”,a[ i ]);

return 1;

}

5 、有 A 、 B 、 C 、 D 四個(gè)人,要在夜里過一座橋。他們通過這座橋分別需要耗時(shí) 1 、 2 、 5 、 10 分鐘,只有一支手電,并且同時(shí)最多只能兩個(gè)人一起過橋。請(qǐng)問,如何安排,能夠在 17 分鐘內(nèi)這四個(gè)人都過橋?

Solution:關(guān)鍵是時(shí)間最長(zhǎng)的兩個(gè)人必須同時(shí)過橋

The First Time : ? ? ? A(1) 和 B(2) 過橋, A(1) 返回 Cost : 1+2

The Second Time : ? ?C(5) 和 D(10) 過橋, B(2) 返回 Cost : 10+2

The Third Time ? ? A(1) 和 B(2) 過橋 Cost : 2

Total Time Cost : ? ?(1+2)+(10+2)+2=17 minutes

1.請(qǐng)定義一個(gè)宏,比較兩個(gè)數(shù)a、b的大小,不能使用大于、小于、if語句

2.如何輸出源文件的標(biāo)題和目前執(zhí)行行的行數(shù)

3.兩個(gè)數(shù)相乘,小數(shù)點(diǎn)后位數(shù)沒有限制,請(qǐng)寫一個(gè)高精度算法

數(shù)據(jù)控制語言(DCL):是用來設(shè)置或者更改數(shù)據(jù)庫(kù)用戶或角色權(quán)限的語句,這些語句包括GRANT、DENY、REVOKE等語句,在默認(rèn)狀態(tài)下,只有sysadmin、dbcreator、db_owner或db_securityadmin等角色的成員才有權(quán)利執(zhí)行數(shù)據(jù)控制語言。

數(shù)據(jù)操縱語言(DML):數(shù)據(jù)操縱語言是指用來查詢、添加、修改和刪除數(shù)據(jù)庫(kù)中數(shù)據(jù)的語句,這些語句包括Select、Insert、Update、Delete等。在默認(rèn)情況下,只有sysadmin、dbcreator、db_owner或db_datawriter等角色的成員才有權(quán)利執(zhí)行數(shù)據(jù)操縱語言。

數(shù)據(jù)定義語言(DDL):數(shù)據(jù)定義語言是指用來定義和管理數(shù)據(jù)庫(kù)以及數(shù)據(jù)庫(kù)中的各種對(duì)象的語句,這些語句包括Create、Alter和Drop等語句。在SQL Server 2000中,數(shù)據(jù)庫(kù)對(duì)象包括表、視圖、觸發(fā)器、存儲(chǔ)過程、規(guī)則、缺省、用戶自定義的數(shù)據(jù)類型等。這些對(duì)象的創(chuàng)建、修改和刪除等都可以通過使用Create、Alter、Drop等語句來完成。

編譯執(zhí)行和解釋執(zhí)行的區(qū)別:

1、解釋程序

所謂解釋程序是高級(jí)語言翻譯程序的一種,它將源語言(如BASIC)書寫的源程序作為輸入,解釋一句后就提交計(jì)算機(jī)執(zhí)行一句,并不形成目標(biāo)程序。就像外語翻譯中的“口譯”一樣,說一句翻一句,不產(chǎn)生全文的翻譯文本。這種工作方式非常適合于人通過終端設(shè)備與計(jì)算機(jī)會(huì)話,如在終端上打一條命令或語句,解釋程序就立即將此語句解釋成一條或幾條指令并提交硬件立即執(zhí)行且將執(zhí)行結(jié)果反映到終端,從終端把命令打入后,就能立即得到計(jì)算結(jié)果。這的確是很方便的,很適合于一些小型機(jī)的計(jì)算問題。但解釋程序執(zhí)行速度很慢,例如源程序中出現(xiàn)循環(huán),則解釋程序也重復(fù)地解釋并提交執(zhí)行這一組語句,這就造成很大浪費(fèi)。

2、編譯程序

這是一類很重要的語言處理程序,它把高級(jí)語言(如FORTRAN、COBOL、Pascal、C等)源程序作為輸入,進(jìn)行翻譯轉(zhuǎn)換,產(chǎn)生出機(jī)器語言的目標(biāo)程序,然后再讓計(jì)算機(jī)去執(zhí)行這個(gè)目標(biāo)程序,得到計(jì)算結(jié)果。

編譯程序工作時(shí),先分析,后綜合,從而得到目標(biāo)程序。所謂分析,是指詞法分析和語法分析;所謂綜合是指代碼優(yōu)化、存儲(chǔ)分配和代碼生成。為了完成這些分析綜合任務(wù),編譯程序采用對(duì)源程序進(jìn)行多次掃描的辦法,每次掃描集中完成一項(xiàng)或幾項(xiàng)任務(wù),也有一項(xiàng)任務(wù)分散到幾次掃描去完成的。
值得一提的是,大多數(shù)的編譯程序直接產(chǎn)生機(jī)器語言的目標(biāo)代碼,形成可執(zhí)行的目標(biāo)文件,但也有的編譯程序則先產(chǎn)生匯編語言一級(jí)的符號(hào)代碼文件,然后再調(diào)用匯編程序進(jìn)行翻譯加工處理,最后產(chǎn)生可執(zhí)行的機(jī)器語言目標(biāo)文件。

在實(shí)際應(yīng)用中,對(duì)于需要經(jīng)常使用的有大量計(jì)算的大型題目,采用招待速度較快的編譯型的高級(jí)語言較好,雖然編譯過程本身較為復(fù)雜,但一旦形成目標(biāo)文件,以后可多次使用。相反,對(duì)于小型題目或計(jì)算簡(jiǎn)單不太費(fèi)機(jī)時(shí)的題目,則多選用解釋型的會(huì)話式高級(jí)語言,如BASIC,這樣可以大大縮短編程及調(diào)試的時(shí)間。

最后的附加題是一個(gè)“背包問題”

?

總結(jié)

以上是生活随笔為你收集整理的TX相关的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。