taobao
1.n個節(jié)點,網(wǎng)絡(luò)上廣播。廣播算法:主動發(fā)給鄰居一條消息。其它節(jié)點收到消息后,會給出發(fā)給他的鄰居外的所有鄰居發(fā)送一條消息,發(fā)完消息后就不再有動作。如果這個網(wǎng)絡(luò)是一棵樹(n-1),完全圖,超立方體。。。發(fā)送消息的復(fù)雜度是多少?
2.12個人排隊,前排的比后排的矮,且每排都從左到右有序。問有多少種排法。
3.將windows和unix格式混合的文本文件a.txt轉(zhuǎn)換成純unix格式的文本文件。
4.通過ssh登陸linux服務(wù)器啟動一個長時間運行的進程,放在后臺運行,做也號:%1,如何避免斷開ssh而導(dǎo)致這個進程終止。
nohup命令:如果你正在運行一個進程,而且你覺得在退出帳戶時該進程還不會結(jié)束,那么可以使用nohup命令。該命令可以在你退出帳戶/關(guān)閉終端之后繼續(xù)運行相應(yīng)的進程。nohup就是不掛起的意思( n ohang up)。
文章中有這么一句
disown 示例1(如果提交命令時已經(jīng)用“&”將命令放入后臺運行,則可以直接使用“disown”) ?? ? ? ? ? ? ? ? [root@pvcent107 build]# cp -r testLargeFile largeFile & [1] 4825 [root@pvcent107 build]# jobs [1]+ ?Running ? ? ? ? ? ? ? ? cp -i -r testLargeFile largeFile & [root@pvcent107 build]# disown -h %1
6.perl里面聲明:open(FILE,mode,file); 操作的描述,下面哪項不正確: 1.FILE可以用變量$file代替。 2.mode可以喝file寫在一起,比如open(FILE,'>file') 3.mode 為+< 時,值可以讀文件, 不能寫, 4.mode可以省略不寫。
打開文件的常用方法是: open(FH, " $filename")
7.循環(huán)隊列,出隊操作后頭指針front值。
8.c類地址:192.168.5.0進行子網(wǎng)劃分,每個子網(wǎng)10臺主機,子網(wǎng)掩碼為: 255.255.255.192/224/240/252;
9。n進制下,567*456 = 150216,則n等于多少
10.int my(int a){ static int count =a; return count+a; }
printf("%d,%d\n",my(3),my(4))
綜合題:
有fav和buy兩個日志文件,里面有user_id,item_id,非常大,現(xiàn)在想知道哪些用戶在購買了某個產(chǎn)品的同時也收藏了這個商品,輸出這些用戶,以及這些既被購買又收藏的商品。
10.36層的電梯,只能停在兩層,計算,電梯停在哪兩層,保證這次乘坐電梯的所有乘客爬樓梯的層數(shù)之和最少。
11.測試:工廠生產(chǎn)一批氣球,幼兒園預(yù)定了500只用于六一兒童節(jié),如果你是工廠的質(zhì)檢員,負責檢測氣球的質(zhì)量,寫出你的測試方法,測試設(shè)計思路及具體的測試用例。
12.設(shè)計一個針對購物類網(wǎng)頁的抓取系統(tǒng)。購物搜索,為用戶提供垂直類的商品信息,但是我們知道,互聯(lián)網(wǎng)的網(wǎng)頁數(shù)是含量的,包含有用信息的網(wǎng)頁卻很少,如何提高效率和精確度?
13.令狐沖對屢次陷害他的師父岳不群畢恭畢敬,。你怎么看待這種行為。
14.用畫面來體現(xiàn)你的夢想和未來。
15.JavaScript生成DOM <div id="example"> ??<p class="slogan">淘,你喜歡</p> </div>
16,根據(jù)html和css畫出布局示意圖
17.function dosomething() { alert(this); } element.onclick = dosomething, element.onclick = function(){dosomething} 直接執(zhí)行dosomething.
三者執(zhí)行結(jié)果
18.用JavaScript寫一個toRGB函數(shù),轉(zhuǎn)換css中常用的顏色編碼,要求 alert(toRGB("#000FF")) ?//輸出rgb(0,0,255) alert(toRGB("taobao")) ?//輸出taobao alert(toRGB"#GG0000")) ? //#GG0000
19.javascript 代碼,可以再其他地方添加嗲嗎
隔五秒鐘執(zhí)行上面的shout方法。
三、快速計算子網(wǎng)掩碼的方法 最后介紹三種快速計算機子網(wǎng)掩碼的方法。 1. 利用子網(wǎng)數(shù)來計算 在求子網(wǎng)掩碼之前必須先搞清楚要劃分的子網(wǎng)數(shù)目,以及每個子網(wǎng)內(nèi)的所需主機數(shù)目。然后按以下基本步驟進行計算: 第1步,將子網(wǎng)數(shù)目轉(zhuǎn)化為二進制來表示; 第2步,取得子網(wǎng)數(shù)二進制的位數(shù)(n); 第3步,取得該IP地址類的子網(wǎng)掩碼,然后將其主機地址部分的的前n位置“1”,即得出該IP地址劃分子網(wǎng)的子網(wǎng)掩碼。 為了便于理解,現(xiàn)舉例說明如下:現(xiàn)假如要將一B類IP地址168.195.0.0劃分成27個子網(wǎng),則它的子網(wǎng)掩碼的計算機方法如下(對應(yīng)以上各基本步驟): 第1步,首先要劃分成27個子網(wǎng),“27”的二進制為“11011”; 第2步,該子網(wǎng)數(shù)二進制為五位數(shù),即n = 5; 第3步,將該B類地址的子網(wǎng)掩碼255.255.0.0的主機號前5位全部置“1”,即可得到 255.255.248.0,這就是劃分成 27個子網(wǎng)的B類IP地址 168.195.0.0的子網(wǎng)掩碼。 2. 利用主機數(shù)來計算 利用主機數(shù)來計算子網(wǎng)掩碼的方法與上類似,基本步驟如下: 第1步,將子網(wǎng)中需容納的主機數(shù)轉(zhuǎn)化為二進制; 第2步,如果主機數(shù)小于或等于254(因為要去掉保留的兩個IP地址),則取得該主機的二進制位數(shù),為n,這里肯定 n8,這就是說主機地址將占據(jù)不止8位。 第3步,將255.255.255.255的主機地址位數(shù)全部置1,然后從后向前的將n位全部置為 0,即為子網(wǎng)掩碼值。 舉例如下。如要將一B類IP地址為168.195.0.0的網(wǎng)絡(luò)劃分成若干子網(wǎng),要求每個子網(wǎng)內(nèi)有主機數(shù)為700臺,則該子網(wǎng)掩碼的計算方法如下(也是對應(yīng)以上各基本步驟): 第1步,首先將子網(wǎng)中要求容納的主機數(shù)“700”轉(zhuǎn)換成二進制,得到1010111100。 第2步,計算出該二進制的位數(shù)為10位,即n = 10 第3步,將255.255.255.255從后向前的10位全部置“0”,得到的二進制數(shù)為“11111111.11111111.11111100.00000000”,轉(zhuǎn)換成十進制后即為255.255.252.0,這就是該要劃分成主機數(shù)為700的B類IP地址 168.195.0.0的子網(wǎng)掩碼。 3. 子網(wǎng)ID增量計算法 其基本計算步驟如下: 第1步,將所需的子網(wǎng)數(shù)轉(zhuǎn)換為二進制,如所需劃分的子網(wǎng)數(shù)為“4”,則轉(zhuǎn)換成成二進制為00000100;? 第2步,取子網(wǎng)數(shù)的二進制中有效位數(shù),即為向缺省子網(wǎng)掩碼中加入的位數(shù)(既向主機ID中借用的位數(shù))。如前面的00000100,有效位為“100”,為3位; 第3步,決定子網(wǎng)掩碼。如IP地址為B類1129.20.0.0網(wǎng)絡(luò),則缺省子網(wǎng)掩碼為:255.255.0.0,借用主機ID的3位以后變?yōu)?#xff1a;255.255.224(11100000)0,即將所借的位全表示為1,用作子網(wǎng)掩碼。? 第4步,將所借位的主機ID的起始位段最右邊的“1”轉(zhuǎn)換為十進制,即為每個子網(wǎng)ID之間的增量,如前面的借位的主機ID起始位段為“11100000”,最右邊的“1”,轉(zhuǎn)換成十進制后為25=32。? 第5步,產(chǎn)生的子網(wǎng)ID數(shù)為:2m-2 (m為向缺省子網(wǎng)掩碼中加入的位數(shù)),如本例向子網(wǎng)掩碼中添加的位數(shù)為3,則可用子網(wǎng)ID數(shù)為:23-2=6個;? 第6步,將上面產(chǎn)生的子網(wǎng)ID增量附在原網(wǎng)絡(luò)ID之后的第一個位段,便形成第一個子網(wǎng)網(wǎng)絡(luò)ID 129.20.32.0;? 第7步,重復(fù)上步操作,在原子網(wǎng)ID基礎(chǔ)上加上一個子網(wǎng)ID增量,依次類推,直到子網(wǎng)ID中的最后位段為缺省子網(wǎng)掩碼位用主機ID位之后的最后一個位段值,這樣就可得到所有的子網(wǎng)網(wǎng)絡(luò)ID。如缺省子網(wǎng)掩碼位用主機ID位之后的子網(wǎng)ID為255.255.224.0,其中的“224”為借用主機ID后子網(wǎng)ID的最后一位段值,所以當子網(wǎng)ID通過以上增加增量的方法得到129.20.224.0時便終止,不要再添加了。
: 1、vim里怎么換行(命令模式和insert模式)? ?? ? ? ? ? ? ? ? 這個題命令模式下回車和a都不可以。? : 2、兩個有序列表連接成一個,最少比較次數(shù)? : 3、給一個前綴表達式,求中綴表達式? : 4、-73的補碼? : 5、函數(shù)f【1001】=0,f【1011】=1,問可以成為f的表達式的是?我選了異或? : 6、一數(shù)組和指向該數(shù)組的指針,指針自增后,求輸出。。。? :? : 問答題:? : 1、100用戶,每人好友約10個,如何準實時顯示好友狀態(tài);當用戶增至100萬時候,會出現(xiàn)什么問題,你之前的方案是否仍然可行? : 2、javascript寫一個排序函數(shù)? : 3、javascript寫一個函數(shù),每隔五秒調(diào)用某個函數(shù)? : 4、javascript寫一個函數(shù),判斷輸入的字符串是否有效的email地址,用正則表達式? : 5、html和css方面:給出代碼,畫出網(wǎng)頁大體布局? : 6、評價令狐沖對岳不群的態(tài)度? : 7、隨便涂鴉,表達你的夢想和未來打算?
編程題必做題:? 兩種編碼方式G和U要進行轉(zhuǎn)換,已經(jīng)有了兩種轉(zhuǎn)換函數(shù)GtoU(),和UtoG()可以進行轉(zhuǎn)換,但是現(xiàn)在不知道輸入的字符串是G還是U編碼,如果利用正確,則能得到正確的輸出,否則函數(shù)返回一個錯誤值。那么這時就可以調(diào)用另外一個函數(shù),即可得到正確的轉(zhuǎn)碼。如果默認假設(shè)輸入的字符串是U編碼的,需要轉(zhuǎn)換為G編碼的,調(diào)用UtoG(), 如果輸入是G編碼的,則需要再次調(diào)用GtoU()。但是如果給的一組字符串都是G編碼的,那第一次嘗試總是錯誤的。為了避免這樣的問題,有人設(shè)計了一個根據(jù)先驗概率來嘗試第一次嘗試的算法:對前N次輸入都假設(shè)字符串是U編碼,然后對前N次嘗試進行統(tǒng)計,如果U編碼的次數(shù)大于等于50%,則下一次就假設(shè)是U編碼,調(diào)用UtoG(),否則假設(shè)下一次是G編碼,并調(diào)用GtoU()。? 你的任務(wù)是計算這樣的算法的正確率是多少?? 請編寫函數(shù) double GorU(int N, int M, string input)? 其中N表示當前判斷是依據(jù)前N次的統(tǒng)計結(jié)果。M表示輸入的字符串的長度,input為輸入的字符串,假設(shè)輸入只能是字母G和U。? 例1:? 輸入:10,1,”U”? 輸出:1? ? 輸入:2,10,”UGUGGUUGUU”? 輸出:0.5? 根據(jù)算法,每次嘗試依次為 UUUUUGUUUU? ? 輸入:4,14,”UGUGUUGGGGGUUG”? 輸出:0.428571? 根據(jù)算法,每次依次嘗試為 UUUUUUUUUGGGGU? ? 我寫的代碼:? #include <string>? using namespace std;? ? double GorU(int N, int M, string input)? {? ?? ?int correct = 0, u = 0, cur = 0;? ?? ?double pct = 0.0;? ?? ?int *ref = new int[N];? ?? ?while (cur < M)? ?? ?{? ?? ? ? ?if (cur < N)? ?? ? ? ?{? ?? ? ? ? ? ?if (input[cur] == 'U')? ?? ? ? ? ? ?{? ?? ? ? ? ? ? ? ?++u;? ?? ? ? ? ? ? ? ?++correct;? ?? ? ? ? ? ? ? ?ref[cur] = 1;? ?? ? ? ? ? ?}? ?? ? ? ? ? ?else? ?? ? ? ? ? ? ? ?ref[cur] = 0;? ?? ? ? ?}? ?? ? ? ?else? ?? ? ? ?{? ?? ? ? ? ? ?pct = (double)u/(double)N;? ?? ? ? ? ? ?if ((input[cur] == 'U' && pct >= 0.5) || (input[cur] == 'G' && pct < 0.5))? ?? ? ? ? ? ? ? ?++correct;? ?? ? ? ? ? ?if (ref[cur % N] == 1)? ?? ? ? ? ? ? ? ?--u;? ?? ? ? ? ? ?if (input[cur] == 'U')? ?? ? ? ? ? ?{? ?? ? ? ? ? ? ? ?++u;? ?? ? ? ? ? ? ? ?ref[cur % N] = 1;? ?? ? ? ? ? ?}? ?? ? ? ? ? ?else? ?? ? ? ? ? ? ? ?ref[cur % N] = 0; ? ? ? ?? ?? ? ? ?}? ?? ? ? ?++cur;? ?? ?}? ?? ?delete ref;? ?? ?ref = NULL;? ?? ?return (double)correct/(double)M;? }?
========== ? 面試 ======================== 話說面的時候感覺還不錯呢。為什么不要我呢?
1.上來就讓自我介紹了下。說了沒一分鐘就完了。。。我是不是應(yīng)該準備一個自我介紹?
2.讓我介紹下項目。把簡歷上的3個項目從頭到尾給他介紹了下。。。但只是講了項目的內(nèi)容。沒有講我自己做的東西。。。這個是不是應(yīng)該好好準備下。
3.然后就開始問c和c++的基礎(chǔ)知識了。
大概問了以下內(nèi)容: 1.服務(wù)器端socket的過程:socket,bind,listen,accept,send/recv,一開始不記得bind要不要,猶豫了下,他發(fā)現(xiàn)了,就揪著問,我就說是要的。client端不需要
2.問七層協(xié)議有哪七層。
3.問項目內(nèi)容。和下層是怎么交互的。和上層又是怎么交互的。我就說和下層是使用它們提供的庫函數(shù),直接read和write。網(wǎng)上層的話是是用socket進行通信的。然后問我們的socket是客戶端還是服務(wù)器端。 我想了一會,分析了一下(原來就沒想過這個問題),說是客戶端
1.c參數(shù)傳遞有哪幾種方式,有很么區(qū)別。。。我說:傳值,和傳指針。區(qū)別就不細說了,應(yīng)該是回答正確了的。 2.c++里面的復(fù)制構(gòu)造函數(shù):自己實現(xiàn)的復(fù)制構(gòu)造函數(shù)和默認的復(fù)制構(gòu)造函數(shù)有什么區(qū)別?。 我說的是默認構(gòu)造函數(shù)會將對象相對應(yīng)的變量都會復(fù)制過來。而如果不想要全部復(fù)制或者有別的復(fù)制方法,則需要自己定義。 3.指針和引用的區(qū)別 引用必須要在定義的時候初始化,并且不能再修改。而指針可以不需要在定義的時候初始化,并且值可以修改。 4.C和C++混合開發(fā)中extern “C”的含義:這個沒回答出來。 5.問什么是僵尸進程。。。我回答成了孤兒進程。然后他就問什么是孤兒進程。我才想起來剛才回答的是孤兒進程。僵尸進程是什么呢?忘了。后來想起來,是運行完了等著回收的進程。 6.問了什么是字節(jié)對齊。我就說在struct里面,比如有一個char和一個int型的數(shù),都應(yīng)該對齊到int,四個字節(jié)。這個題沒怎么回答好。。。 7.問了const成員函數(shù)有什么限制。我說只能訪問const成員變量。 8.什么是死鎖。這個很簡單。 9.數(shù)據(jù)庫用過哪些:mysql,sql server。問為什么要建立索引。索引一定能提高效率嘛?什么時候會導(dǎo)致性能的降低? 10.介紹struts模式。我介紹了mvc 11.介紹下EJB,這個不太記得了。只是說是企業(yè)級應(yīng)用bean,提高復(fù)用用的。 12, 大端模式,小端模式
128 位機器的sizeof int是多少。為了效率,16個byte(寄存器是16個byte)比較好,但是還應(yīng)該和編譯器有關(guān)系。 1. 不能想當然的認為sizeof(int)一定是4或者8,64位cpu下與編譯器相關(guān): 2. 64位cpu下指針的大小變?yōu)?個字節(jié) 3. sizeof(long)的值根據(jù)不同的編譯器可能會有變化
An int is usually the size of a single register on the processor on which your software is built to run. So for 16 bit operating systems (e.g. Windows 3.1, MSDOS), that'll be 16 bits, for 64 bit operating systems, its 64 bits.
You really shouldn't be relying on integers being a specific size, if you want to use fixed-size integers, then you'll find there are other declarations that you can use, but take care here, some of these can be compiler-based.
4. 在平時的編程過程中,不能固定下一種思維,認為sizeof(int)一定是某個數(shù)值,為以后程序向64位cpu移植時埋下隱患
64位是處理器一次能處理的字長,跟編譯器中的int沒有直接關(guān)系
整型量所占的長度和計算機的CPU字長有關(guān),在16位機上整型量就占16位,在32位機上整型量就占32位,在64位機上整型量就占64位,即8個字節(jié)。
這種規(guī)定跟編譯器有關(guān),就看編譯器怎么設(shè)計的了。
2.12個人排隊,前排的比后排的矮,且每排都從左到右有序。問有多少種排法。
3.將windows和unix格式混合的文本文件a.txt轉(zhuǎn)換成純unix格式的文本文件。
4.通過ssh登陸linux服務(wù)器啟動一個長時間運行的進程,放在后臺運行,做也號:%1,如何避免斷開ssh而導(dǎo)致這個進程終止。
nohup命令:如果你正在運行一個進程,而且你覺得在退出帳戶時該進程還不會結(jié)束,那么可以使用nohup命令。該命令可以在你退出帳戶/關(guān)閉終端之后繼續(xù)運行相應(yīng)的進程。nohup就是不掛起的意思( n ohang up)。
文章中有這么一句
disown 示例1(如果提交命令時已經(jīng)用“&”將命令放入后臺運行,則可以直接使用“disown”) ?? ? ? ? ? ? ? ? [root@pvcent107 build]# cp -r testLargeFile largeFile & [1] 4825 [root@pvcent107 build]# jobs [1]+ ?Running ? ? ? ? ? ? ? ? cp -i -r testLargeFile largeFile & [root@pvcent107 build]# disown -h %1
6.perl里面聲明:open(FILE,mode,file); 操作的描述,下面哪項不正確: 1.FILE可以用變量$file代替。 2.mode可以喝file寫在一起,比如open(FILE,'>file') 3.mode 為+< 時,值可以讀文件, 不能寫, 4.mode可以省略不寫。
打開文件的常用方法是: open(FH, " $filename")
7.循環(huán)隊列,出隊操作后頭指針front值。
8.c類地址:192.168.5.0進行子網(wǎng)劃分,每個子網(wǎng)10臺主機,子網(wǎng)掩碼為: 255.255.255.192/224/240/252;
9。n進制下,567*456 = 150216,則n等于多少
10.int my(int a){ static int count =a; return count+a; }
printf("%d,%d\n",my(3),my(4))
綜合題:
有fav和buy兩個日志文件,里面有user_id,item_id,非常大,現(xiàn)在想知道哪些用戶在購買了某個產(chǎn)品的同時也收藏了這個商品,輸出這些用戶,以及這些既被購買又收藏的商品。
10.36層的電梯,只能停在兩層,計算,電梯停在哪兩層,保證這次乘坐電梯的所有乘客爬樓梯的層數(shù)之和最少。
11.測試:工廠生產(chǎn)一批氣球,幼兒園預(yù)定了500只用于六一兒童節(jié),如果你是工廠的質(zhì)檢員,負責檢測氣球的質(zhì)量,寫出你的測試方法,測試設(shè)計思路及具體的測試用例。
12.設(shè)計一個針對購物類網(wǎng)頁的抓取系統(tǒng)。購物搜索,為用戶提供垂直類的商品信息,但是我們知道,互聯(lián)網(wǎng)的網(wǎng)頁數(shù)是含量的,包含有用信息的網(wǎng)頁卻很少,如何提高效率和精確度?
13.令狐沖對屢次陷害他的師父岳不群畢恭畢敬,。你怎么看待這種行為。
14.用畫面來體現(xiàn)你的夢想和未來。
15.JavaScript生成DOM <div id="example"> ??<p class="slogan">淘,你喜歡</p> </div>
16,根據(jù)html和css畫出布局示意圖
17.function dosomething() { alert(this); } element.onclick = dosomething, element.onclick = function(){dosomething} 直接執(zhí)行dosomething.
三者執(zhí)行結(jié)果
18.用JavaScript寫一個toRGB函數(shù),轉(zhuǎn)換css中常用的顏色編碼,要求 alert(toRGB("#000FF")) ?//輸出rgb(0,0,255) alert(toRGB("taobao")) ?//輸出taobao alert(toRGB"#GG0000")) ? //#GG0000
19.javascript 代碼,可以再其他地方添加嗲嗎
隔五秒鐘執(zhí)行上面的shout方法。
三、快速計算子網(wǎng)掩碼的方法 最后介紹三種快速計算機子網(wǎng)掩碼的方法。 1. 利用子網(wǎng)數(shù)來計算 在求子網(wǎng)掩碼之前必須先搞清楚要劃分的子網(wǎng)數(shù)目,以及每個子網(wǎng)內(nèi)的所需主機數(shù)目。然后按以下基本步驟進行計算: 第1步,將子網(wǎng)數(shù)目轉(zhuǎn)化為二進制來表示; 第2步,取得子網(wǎng)數(shù)二進制的位數(shù)(n); 第3步,取得該IP地址類的子網(wǎng)掩碼,然后將其主機地址部分的的前n位置“1”,即得出該IP地址劃分子網(wǎng)的子網(wǎng)掩碼。 為了便于理解,現(xiàn)舉例說明如下:現(xiàn)假如要將一B類IP地址168.195.0.0劃分成27個子網(wǎng),則它的子網(wǎng)掩碼的計算機方法如下(對應(yīng)以上各基本步驟): 第1步,首先要劃分成27個子網(wǎng),“27”的二進制為“11011”; 第2步,該子網(wǎng)數(shù)二進制為五位數(shù),即n = 5; 第3步,將該B類地址的子網(wǎng)掩碼255.255.0.0的主機號前5位全部置“1”,即可得到 255.255.248.0,這就是劃分成 27個子網(wǎng)的B類IP地址 168.195.0.0的子網(wǎng)掩碼。 2. 利用主機數(shù)來計算 利用主機數(shù)來計算子網(wǎng)掩碼的方法與上類似,基本步驟如下: 第1步,將子網(wǎng)中需容納的主機數(shù)轉(zhuǎn)化為二進制; 第2步,如果主機數(shù)小于或等于254(因為要去掉保留的兩個IP地址),則取得該主機的二進制位數(shù),為n,這里肯定 n8,這就是說主機地址將占據(jù)不止8位。 第3步,將255.255.255.255的主機地址位數(shù)全部置1,然后從后向前的將n位全部置為 0,即為子網(wǎng)掩碼值。 舉例如下。如要將一B類IP地址為168.195.0.0的網(wǎng)絡(luò)劃分成若干子網(wǎng),要求每個子網(wǎng)內(nèi)有主機數(shù)為700臺,則該子網(wǎng)掩碼的計算方法如下(也是對應(yīng)以上各基本步驟): 第1步,首先將子網(wǎng)中要求容納的主機數(shù)“700”轉(zhuǎn)換成二進制,得到1010111100。 第2步,計算出該二進制的位數(shù)為10位,即n = 10 第3步,將255.255.255.255從后向前的10位全部置“0”,得到的二進制數(shù)為“11111111.11111111.11111100.00000000”,轉(zhuǎn)換成十進制后即為255.255.252.0,這就是該要劃分成主機數(shù)為700的B類IP地址 168.195.0.0的子網(wǎng)掩碼。 3. 子網(wǎng)ID增量計算法 其基本計算步驟如下: 第1步,將所需的子網(wǎng)數(shù)轉(zhuǎn)換為二進制,如所需劃分的子網(wǎng)數(shù)為“4”,則轉(zhuǎn)換成成二進制為00000100;? 第2步,取子網(wǎng)數(shù)的二進制中有效位數(shù),即為向缺省子網(wǎng)掩碼中加入的位數(shù)(既向主機ID中借用的位數(shù))。如前面的00000100,有效位為“100”,為3位; 第3步,決定子網(wǎng)掩碼。如IP地址為B類1129.20.0.0網(wǎng)絡(luò),則缺省子網(wǎng)掩碼為:255.255.0.0,借用主機ID的3位以后變?yōu)?#xff1a;255.255.224(11100000)0,即將所借的位全表示為1,用作子網(wǎng)掩碼。? 第4步,將所借位的主機ID的起始位段最右邊的“1”轉(zhuǎn)換為十進制,即為每個子網(wǎng)ID之間的增量,如前面的借位的主機ID起始位段為“11100000”,最右邊的“1”,轉(zhuǎn)換成十進制后為25=32。? 第5步,產(chǎn)生的子網(wǎng)ID數(shù)為:2m-2 (m為向缺省子網(wǎng)掩碼中加入的位數(shù)),如本例向子網(wǎng)掩碼中添加的位數(shù)為3,則可用子網(wǎng)ID數(shù)為:23-2=6個;? 第6步,將上面產(chǎn)生的子網(wǎng)ID增量附在原網(wǎng)絡(luò)ID之后的第一個位段,便形成第一個子網(wǎng)網(wǎng)絡(luò)ID 129.20.32.0;? 第7步,重復(fù)上步操作,在原子網(wǎng)ID基礎(chǔ)上加上一個子網(wǎng)ID增量,依次類推,直到子網(wǎng)ID中的最后位段為缺省子網(wǎng)掩碼位用主機ID位之后的最后一個位段值,這樣就可得到所有的子網(wǎng)網(wǎng)絡(luò)ID。如缺省子網(wǎng)掩碼位用主機ID位之后的子網(wǎng)ID為255.255.224.0,其中的“224”為借用主機ID后子網(wǎng)ID的最后一位段值,所以當子網(wǎng)ID通過以上增加增量的方法得到129.20.224.0時便終止,不要再添加了。
: 1、vim里怎么換行(命令模式和insert模式)? ?? ? ? ? ? ? ? ? 這個題命令模式下回車和a都不可以。? : 2、兩個有序列表連接成一個,最少比較次數(shù)? : 3、給一個前綴表達式,求中綴表達式? : 4、-73的補碼? : 5、函數(shù)f【1001】=0,f【1011】=1,問可以成為f的表達式的是?我選了異或? : 6、一數(shù)組和指向該數(shù)組的指針,指針自增后,求輸出。。。? :? : 問答題:? : 1、100用戶,每人好友約10個,如何準實時顯示好友狀態(tài);當用戶增至100萬時候,會出現(xiàn)什么問題,你之前的方案是否仍然可行? : 2、javascript寫一個排序函數(shù)? : 3、javascript寫一個函數(shù),每隔五秒調(diào)用某個函數(shù)? : 4、javascript寫一個函數(shù),判斷輸入的字符串是否有效的email地址,用正則表達式? : 5、html和css方面:給出代碼,畫出網(wǎng)頁大體布局? : 6、評價令狐沖對岳不群的態(tài)度? : 7、隨便涂鴉,表達你的夢想和未來打算?
編程題必做題:? 兩種編碼方式G和U要進行轉(zhuǎn)換,已經(jīng)有了兩種轉(zhuǎn)換函數(shù)GtoU(),和UtoG()可以進行轉(zhuǎn)換,但是現(xiàn)在不知道輸入的字符串是G還是U編碼,如果利用正確,則能得到正確的輸出,否則函數(shù)返回一個錯誤值。那么這時就可以調(diào)用另外一個函數(shù),即可得到正確的轉(zhuǎn)碼。如果默認假設(shè)輸入的字符串是U編碼的,需要轉(zhuǎn)換為G編碼的,調(diào)用UtoG(), 如果輸入是G編碼的,則需要再次調(diào)用GtoU()。但是如果給的一組字符串都是G編碼的,那第一次嘗試總是錯誤的。為了避免這樣的問題,有人設(shè)計了一個根據(jù)先驗概率來嘗試第一次嘗試的算法:對前N次輸入都假設(shè)字符串是U編碼,然后對前N次嘗試進行統(tǒng)計,如果U編碼的次數(shù)大于等于50%,則下一次就假設(shè)是U編碼,調(diào)用UtoG(),否則假設(shè)下一次是G編碼,并調(diào)用GtoU()。? 你的任務(wù)是計算這樣的算法的正確率是多少?? 請編寫函數(shù) double GorU(int N, int M, string input)? 其中N表示當前判斷是依據(jù)前N次的統(tǒng)計結(jié)果。M表示輸入的字符串的長度,input為輸入的字符串,假設(shè)輸入只能是字母G和U。? 例1:? 輸入:10,1,”U”? 輸出:1? ? 輸入:2,10,”UGUGGUUGUU”? 輸出:0.5? 根據(jù)算法,每次嘗試依次為 UUUUUGUUUU? ? 輸入:4,14,”UGUGUUGGGGGUUG”? 輸出:0.428571? 根據(jù)算法,每次依次嘗試為 UUUUUUUUUGGGGU? ? 我寫的代碼:? #include <string>? using namespace std;? ? double GorU(int N, int M, string input)? {? ?? ?int correct = 0, u = 0, cur = 0;? ?? ?double pct = 0.0;? ?? ?int *ref = new int[N];? ?? ?while (cur < M)? ?? ?{? ?? ? ? ?if (cur < N)? ?? ? ? ?{? ?? ? ? ? ? ?if (input[cur] == 'U')? ?? ? ? ? ? ?{? ?? ? ? ? ? ? ? ?++u;? ?? ? ? ? ? ? ? ?++correct;? ?? ? ? ? ? ? ? ?ref[cur] = 1;? ?? ? ? ? ? ?}? ?? ? ? ? ? ?else? ?? ? ? ? ? ? ? ?ref[cur] = 0;? ?? ? ? ?}? ?? ? ? ?else? ?? ? ? ?{? ?? ? ? ? ? ?pct = (double)u/(double)N;? ?? ? ? ? ? ?if ((input[cur] == 'U' && pct >= 0.5) || (input[cur] == 'G' && pct < 0.5))? ?? ? ? ? ? ? ? ?++correct;? ?? ? ? ? ? ?if (ref[cur % N] == 1)? ?? ? ? ? ? ? ? ?--u;? ?? ? ? ? ? ?if (input[cur] == 'U')? ?? ? ? ? ? ?{? ?? ? ? ? ? ? ? ?++u;? ?? ? ? ? ? ? ? ?ref[cur % N] = 1;? ?? ? ? ? ? ?}? ?? ? ? ? ? ?else? ?? ? ? ? ? ? ? ?ref[cur % N] = 0; ? ? ? ?? ?? ? ? ?}? ?? ? ? ?++cur;? ?? ?}? ?? ?delete ref;? ?? ?ref = NULL;? ?? ?return (double)correct/(double)M;? }?
========== ? 面試 ======================== 話說面的時候感覺還不錯呢。為什么不要我呢?
1.上來就讓自我介紹了下。說了沒一分鐘就完了。。。我是不是應(yīng)該準備一個自我介紹?
2.讓我介紹下項目。把簡歷上的3個項目從頭到尾給他介紹了下。。。但只是講了項目的內(nèi)容。沒有講我自己做的東西。。。這個是不是應(yīng)該好好準備下。
3.然后就開始問c和c++的基礎(chǔ)知識了。
大概問了以下內(nèi)容: 1.服務(wù)器端socket的過程:socket,bind,listen,accept,send/recv,一開始不記得bind要不要,猶豫了下,他發(fā)現(xiàn)了,就揪著問,我就說是要的。client端不需要
2.問七層協(xié)議有哪七層。
3.問項目內(nèi)容。和下層是怎么交互的。和上層又是怎么交互的。我就說和下層是使用它們提供的庫函數(shù),直接read和write。網(wǎng)上層的話是是用socket進行通信的。然后問我們的socket是客戶端還是服務(wù)器端。 我想了一會,分析了一下(原來就沒想過這個問題),說是客戶端
1.c參數(shù)傳遞有哪幾種方式,有很么區(qū)別。。。我說:傳值,和傳指針。區(qū)別就不細說了,應(yīng)該是回答正確了的。 2.c++里面的復(fù)制構(gòu)造函數(shù):自己實現(xiàn)的復(fù)制構(gòu)造函數(shù)和默認的復(fù)制構(gòu)造函數(shù)有什么區(qū)別?。 我說的是默認構(gòu)造函數(shù)會將對象相對應(yīng)的變量都會復(fù)制過來。而如果不想要全部復(fù)制或者有別的復(fù)制方法,則需要自己定義。 3.指針和引用的區(qū)別 引用必須要在定義的時候初始化,并且不能再修改。而指針可以不需要在定義的時候初始化,并且值可以修改。 4.C和C++混合開發(fā)中extern “C”的含義:這個沒回答出來。 5.問什么是僵尸進程。。。我回答成了孤兒進程。然后他就問什么是孤兒進程。我才想起來剛才回答的是孤兒進程。僵尸進程是什么呢?忘了。后來想起來,是運行完了等著回收的進程。 6.問了什么是字節(jié)對齊。我就說在struct里面,比如有一個char和一個int型的數(shù),都應(yīng)該對齊到int,四個字節(jié)。這個題沒怎么回答好。。。 7.問了const成員函數(shù)有什么限制。我說只能訪問const成員變量。 8.什么是死鎖。這個很簡單。 9.數(shù)據(jù)庫用過哪些:mysql,sql server。問為什么要建立索引。索引一定能提高效率嘛?什么時候會導(dǎo)致性能的降低? 10.介紹struts模式。我介紹了mvc 11.介紹下EJB,這個不太記得了。只是說是企業(yè)級應(yīng)用bean,提高復(fù)用用的。 12, 大端模式,小端模式
128 位機器的sizeof int是多少。為了效率,16個byte(寄存器是16個byte)比較好,但是還應(yīng)該和編譯器有關(guān)系。 1. 不能想當然的認為sizeof(int)一定是4或者8,64位cpu下與編譯器相關(guān): 2. 64位cpu下指針的大小變?yōu)?個字節(jié) 3. sizeof(long)的值根據(jù)不同的編譯器可能會有變化
An int is usually the size of a single register on the processor on which your software is built to run. So for 16 bit operating systems (e.g. Windows 3.1, MSDOS), that'll be 16 bits, for 64 bit operating systems, its 64 bits.
You really shouldn't be relying on integers being a specific size, if you want to use fixed-size integers, then you'll find there are other declarations that you can use, but take care here, some of these can be compiler-based.
4. 在平時的編程過程中,不能固定下一種思維,認為sizeof(int)一定是某個數(shù)值,為以后程序向64位cpu移植時埋下隱患
64位是處理器一次能處理的字長,跟編譯器中的int沒有直接關(guān)系
整型量所占的長度和計算機的CPU字長有關(guān),在16位機上整型量就占16位,在32位機上整型量就占32位,在64位機上整型量就占64位,即8個字節(jié)。
這種規(guī)定跟編譯器有關(guān),就看編譯器怎么設(shè)計的了。
總結(jié)
- 上一篇: struct 与 class区别
- 下一篇: 抛硬币 直到连续出现两次字为止