taobao
1.n個節點,網絡上廣播。廣播算法:主動發給鄰居一條消息。其它節點收到消息后,會給出發給他的鄰居外的所有鄰居發送一條消息,發完消息后就不再有動作。如果這個網絡是一棵樹(n-1),完全圖,超立方體。。。發送消息的復雜度是多少?
2.12個人排隊,前排的比后排的矮,且每排都從左到右有序。問有多少種排法。
3.將windows和unix格式混合的文本文件a.txt轉換成純unix格式的文本文件。
4.通過ssh登陸linux服務器啟動一個長時間運行的進程,放在后臺運行,做也號:%1,如何避免斷開ssh而導致這個進程終止。
nohup命令:如果你正在運行一個進程,而且你覺得在退出帳戶時該進程還不會結束,那么可以使用nohup命令。該命令可以在你退出帳戶/關閉終端之后繼續運行相應的進程。nohup就是不掛起的意思( n ohang up)。
文章中有這么一句
disown 示例1(如果提交命令時已經用“&”將命令放入后臺運行,則可以直接使用“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.循環隊列,出隊操作后頭指針front值。
8.c類地址:192.168.5.0進行子網劃分,每個子網10臺主機,子網掩碼為: 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,非常大,現在想知道哪些用戶在購買了某個產品的同時也收藏了這個商品,輸出這些用戶,以及這些既被購買又收藏的商品。
10.36層的電梯,只能停在兩層,計算,電梯停在哪兩層,保證這次乘坐電梯的所有乘客爬樓梯的層數之和最少。
11.測試:工廠生產一批氣球,幼兒園預定了500只用于六一兒童節,如果你是工廠的質檢員,負責檢測氣球的質量,寫出你的測試方法,測試設計思路及具體的測試用例。
12.設計一個針對購物類網頁的抓取系統。購物搜索,為用戶提供垂直類的商品信息,但是我們知道,互聯網的網頁數是含量的,包含有用信息的網頁卻很少,如何提高效率和精確度?
13.令狐沖對屢次陷害他的師父岳不群畢恭畢敬,。你怎么看待這種行為。
14.用畫面來體現你的夢想和未來。
15.JavaScript生成DOM <div id="example"> ??<p class="slogan">淘,你喜歡</p> </div>
16,根據html和css畫出布局示意圖
17.function dosomething() { alert(this); } element.onclick = dosomething, element.onclick = function(){dosomething} 直接執行dosomething.
三者執行結果
18.用JavaScript寫一個toRGB函數,轉換css中常用的顏色編碼,要求 alert(toRGB("#000FF")) ?//輸出rgb(0,0,255) alert(toRGB("taobao")) ?//輸出taobao alert(toRGB"#GG0000")) ? //#GG0000
19.javascript 代碼,可以再其他地方添加嗲嗎
隔五秒鐘執行上面的shout方法。
三、快速計算子網掩碼的方法 最后介紹三種快速計算機子網掩碼的方法。 1. 利用子網數來計算 在求子網掩碼之前必須先搞清楚要劃分的子網數目,以及每個子網內的所需主機數目。然后按以下基本步驟進行計算: 第1步,將子網數目轉化為二進制來表示; 第2步,取得子網數二進制的位數(n); 第3步,取得該IP地址類的子網掩碼,然后將其主機地址部分的的前n位置“1”,即得出該IP地址劃分子網的子網掩碼。 為了便于理解,現舉例說明如下:現假如要將一B類IP地址168.195.0.0劃分成27個子網,則它的子網掩碼的計算機方法如下(對應以上各基本步驟): 第1步,首先要劃分成27個子網,“27”的二進制為“11011”; 第2步,該子網數二進制為五位數,即n = 5; 第3步,將該B類地址的子網掩碼255.255.0.0的主機號前5位全部置“1”,即可得到 255.255.248.0,這就是劃分成 27個子網的B類IP地址 168.195.0.0的子網掩碼。 2. 利用主機數來計算 利用主機數來計算子網掩碼的方法與上類似,基本步驟如下: 第1步,將子網中需容納的主機數轉化為二進制; 第2步,如果主機數小于或等于254(因為要去掉保留的兩個IP地址),則取得該主機的二進制位數,為n,這里肯定 n8,這就是說主機地址將占據不止8位。 第3步,將255.255.255.255的主機地址位數全部置1,然后從后向前的將n位全部置為 0,即為子網掩碼值。 舉例如下。如要將一B類IP地址為168.195.0.0的網絡劃分成若干子網,要求每個子網內有主機數為700臺,則該子網掩碼的計算方法如下(也是對應以上各基本步驟): 第1步,首先將子網中要求容納的主機數“700”轉換成二進制,得到1010111100。 第2步,計算出該二進制的位數為10位,即n = 10 第3步,將255.255.255.255從后向前的10位全部置“0”,得到的二進制數為“11111111.11111111.11111100.00000000”,轉換成十進制后即為255.255.252.0,這就是該要劃分成主機數為700的B類IP地址 168.195.0.0的子網掩碼。 3. 子網ID增量計算法 其基本計算步驟如下: 第1步,將所需的子網數轉換為二進制,如所需劃分的子網數為“4”,則轉換成成二進制為00000100;? 第2步,取子網數的二進制中有效位數,即為向缺省子網掩碼中加入的位數(既向主機ID中借用的位數)。如前面的00000100,有效位為“100”,為3位; 第3步,決定子網掩碼。如IP地址為B類1129.20.0.0網絡,則缺省子網掩碼為:255.255.0.0,借用主機ID的3位以后變為:255.255.224(11100000)0,即將所借的位全表示為1,用作子網掩碼。? 第4步,將所借位的主機ID的起始位段最右邊的“1”轉換為十進制,即為每個子網ID之間的增量,如前面的借位的主機ID起始位段為“11100000”,最右邊的“1”,轉換成十進制后為25=32。? 第5步,產生的子網ID數為:2m-2 (m為向缺省子網掩碼中加入的位數),如本例向子網掩碼中添加的位數為3,則可用子網ID數為:23-2=6個;? 第6步,將上面產生的子網ID增量附在原網絡ID之后的第一個位段,便形成第一個子網網絡ID 129.20.32.0;? 第7步,重復上步操作,在原子網ID基礎上加上一個子網ID增量,依次類推,直到子網ID中的最后位段為缺省子網掩碼位用主機ID位之后的最后一個位段值,這樣就可得到所有的子網網絡ID。如缺省子網掩碼位用主機ID位之后的子網ID為255.255.224.0,其中的“224”為借用主機ID后子網ID的最后一位段值,所以當子網ID通過以上增加增量的方法得到129.20.224.0時便終止,不要再添加了。
: 1、vim里怎么換行(命令模式和insert模式)? ?? ? ? ? ? ? ? ? 這個題命令模式下回車和a都不可以。? : 2、兩個有序列表連接成一個,最少比較次數? : 3、給一個前綴表達式,求中綴表達式? : 4、-73的補碼? : 5、函數f【1001】=0,f【1011】=1,問可以成為f的表達式的是?我選了異或? : 6、一數組和指向該數組的指針,指針自增后,求輸出。。。? :? : 問答題:? : 1、100用戶,每人好友約10個,如何準實時顯示好友狀態;當用戶增至100萬時候,會出現什么問題,你之前的方案是否仍然可行? : 2、javascript寫一個排序函數? : 3、javascript寫一個函數,每隔五秒調用某個函數? : 4、javascript寫一個函數,判斷輸入的字符串是否有效的email地址,用正則表達式? : 5、html和css方面:給出代碼,畫出網頁大體布局? : 6、評價令狐沖對岳不群的態度? : 7、隨便涂鴉,表達你的夢想和未來打算?
編程題必做題:? 兩種編碼方式G和U要進行轉換,已經有了兩種轉換函數GtoU(),和UtoG()可以進行轉換,但是現在不知道輸入的字符串是G還是U編碼,如果利用正確,則能得到正確的輸出,否則函數返回一個錯誤值。那么這時就可以調用另外一個函數,即可得到正確的轉碼。如果默認假設輸入的字符串是U編碼的,需要轉換為G編碼的,調用UtoG(), 如果輸入是G編碼的,則需要再次調用GtoU()。但是如果給的一組字符串都是G編碼的,那第一次嘗試總是錯誤的。為了避免這樣的問題,有人設計了一個根據先驗概率來嘗試第一次嘗試的算法:對前N次輸入都假設字符串是U編碼,然后對前N次嘗試進行統計,如果U編碼的次數大于等于50%,則下一次就假設是U編碼,調用UtoG(),否則假設下一次是G編碼,并調用GtoU()。? 你的任務是計算這樣的算法的正確率是多少?? 請編寫函數 double GorU(int N, int M, string input)? 其中N表示當前判斷是依據前N次的統計結果。M表示輸入的字符串的長度,input為輸入的字符串,假設輸入只能是字母G和U。? 例1:? 輸入:10,1,”U”? 輸出:1? ? 輸入:2,10,”UGUGGUUGUU”? 輸出:0.5? 根據算法,每次嘗試依次為 UUUUUGUUUU? ? 輸入:4,14,”UGUGUUGGGGGUUG”? 輸出:0.428571? 根據算法,每次依次嘗試為 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.上來就讓自我介紹了下。說了沒一分鐘就完了。。。我是不是應該準備一個自我介紹?
2.讓我介紹下項目。把簡歷上的3個項目從頭到尾給他介紹了下。。。但只是講了項目的內容。沒有講我自己做的東西。。。這個是不是應該好好準備下。
3.然后就開始問c和c++的基礎知識了。
大概問了以下內容: 1.服務器端socket的過程:socket,bind,listen,accept,send/recv,一開始不記得bind要不要,猶豫了下,他發現了,就揪著問,我就說是要的。client端不需要
2.問七層協議有哪七層。
3.問項目內容。和下層是怎么交互的。和上層又是怎么交互的。我就說和下層是使用它們提供的庫函數,直接read和write。網上層的話是是用socket進行通信的。然后問我們的socket是客戶端還是服務器端。 我想了一會,分析了一下(原來就沒想過這個問題),說是客戶端
1.c參數傳遞有哪幾種方式,有很么區別。。。我說:傳值,和傳指針。區別就不細說了,應該是回答正確了的。 2.c++里面的復制構造函數:自己實現的復制構造函數和默認的復制構造函數有什么區別?。 我說的是默認構造函數會將對象相對應的變量都會復制過來。而如果不想要全部復制或者有別的復制方法,則需要自己定義。 3.指針和引用的區別 引用必須要在定義的時候初始化,并且不能再修改。而指針可以不需要在定義的時候初始化,并且值可以修改。 4.C和C++混合開發中extern “C”的含義:這個沒回答出來。 5.問什么是僵尸進程。。。我回答成了孤兒進程。然后他就問什么是孤兒進程。我才想起來剛才回答的是孤兒進程。僵尸進程是什么呢?忘了。后來想起來,是運行完了等著回收的進程。 6.問了什么是字節對齊。我就說在struct里面,比如有一個char和一個int型的數,都應該對齊到int,四個字節。這個題沒怎么回答好。。。 7.問了const成員函數有什么限制。我說只能訪問const成員變量。 8.什么是死鎖。這個很簡單。 9.數據庫用過哪些:mysql,sql server。問為什么要建立索引。索引一定能提高效率嘛?什么時候會導致性能的降低? 10.介紹struts模式。我介紹了mvc 11.介紹下EJB,這個不太記得了。只是說是企業級應用bean,提高復用用的。 12, 大端模式,小端模式
128 位機器的sizeof int是多少。為了效率,16個byte(寄存器是16個byte)比較好,但是還應該和編譯器有關系。 1. 不能想當然的認為sizeof(int)一定是4或者8,64位cpu下與編譯器相關: 2. 64位cpu下指針的大小變為8個字節 3. sizeof(long)的值根據不同的編譯器可能會有變化
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)一定是某個數值,為以后程序向64位cpu移植時埋下隱患
64位是處理器一次能處理的字長,跟編譯器中的int沒有直接關系
整型量所占的長度和計算機的CPU字長有關,在16位機上整型量就占16位,在32位機上整型量就占32位,在64位機上整型量就占64位,即8個字節。
這種規定跟編譯器有關,就看編譯器怎么設計的了。
2.12個人排隊,前排的比后排的矮,且每排都從左到右有序。問有多少種排法。
3.將windows和unix格式混合的文本文件a.txt轉換成純unix格式的文本文件。
4.通過ssh登陸linux服務器啟動一個長時間運行的進程,放在后臺運行,做也號:%1,如何避免斷開ssh而導致這個進程終止。
nohup命令:如果你正在運行一個進程,而且你覺得在退出帳戶時該進程還不會結束,那么可以使用nohup命令。該命令可以在你退出帳戶/關閉終端之后繼續運行相應的進程。nohup就是不掛起的意思( n ohang up)。
文章中有這么一句
disown 示例1(如果提交命令時已經用“&”將命令放入后臺運行,則可以直接使用“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.循環隊列,出隊操作后頭指針front值。
8.c類地址:192.168.5.0進行子網劃分,每個子網10臺主機,子網掩碼為: 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,非常大,現在想知道哪些用戶在購買了某個產品的同時也收藏了這個商品,輸出這些用戶,以及這些既被購買又收藏的商品。
10.36層的電梯,只能停在兩層,計算,電梯停在哪兩層,保證這次乘坐電梯的所有乘客爬樓梯的層數之和最少。
11.測試:工廠生產一批氣球,幼兒園預定了500只用于六一兒童節,如果你是工廠的質檢員,負責檢測氣球的質量,寫出你的測試方法,測試設計思路及具體的測試用例。
12.設計一個針對購物類網頁的抓取系統。購物搜索,為用戶提供垂直類的商品信息,但是我們知道,互聯網的網頁數是含量的,包含有用信息的網頁卻很少,如何提高效率和精確度?
13.令狐沖對屢次陷害他的師父岳不群畢恭畢敬,。你怎么看待這種行為。
14.用畫面來體現你的夢想和未來。
15.JavaScript生成DOM <div id="example"> ??<p class="slogan">淘,你喜歡</p> </div>
16,根據html和css畫出布局示意圖
17.function dosomething() { alert(this); } element.onclick = dosomething, element.onclick = function(){dosomething} 直接執行dosomething.
三者執行結果
18.用JavaScript寫一個toRGB函數,轉換css中常用的顏色編碼,要求 alert(toRGB("#000FF")) ?//輸出rgb(0,0,255) alert(toRGB("taobao")) ?//輸出taobao alert(toRGB"#GG0000")) ? //#GG0000
19.javascript 代碼,可以再其他地方添加嗲嗎
隔五秒鐘執行上面的shout方法。
三、快速計算子網掩碼的方法 最后介紹三種快速計算機子網掩碼的方法。 1. 利用子網數來計算 在求子網掩碼之前必須先搞清楚要劃分的子網數目,以及每個子網內的所需主機數目。然后按以下基本步驟進行計算: 第1步,將子網數目轉化為二進制來表示; 第2步,取得子網數二進制的位數(n); 第3步,取得該IP地址類的子網掩碼,然后將其主機地址部分的的前n位置“1”,即得出該IP地址劃分子網的子網掩碼。 為了便于理解,現舉例說明如下:現假如要將一B類IP地址168.195.0.0劃分成27個子網,則它的子網掩碼的計算機方法如下(對應以上各基本步驟): 第1步,首先要劃分成27個子網,“27”的二進制為“11011”; 第2步,該子網數二進制為五位數,即n = 5; 第3步,將該B類地址的子網掩碼255.255.0.0的主機號前5位全部置“1”,即可得到 255.255.248.0,這就是劃分成 27個子網的B類IP地址 168.195.0.0的子網掩碼。 2. 利用主機數來計算 利用主機數來計算子網掩碼的方法與上類似,基本步驟如下: 第1步,將子網中需容納的主機數轉化為二進制; 第2步,如果主機數小于或等于254(因為要去掉保留的兩個IP地址),則取得該主機的二進制位數,為n,這里肯定 n8,這就是說主機地址將占據不止8位。 第3步,將255.255.255.255的主機地址位數全部置1,然后從后向前的將n位全部置為 0,即為子網掩碼值。 舉例如下。如要將一B類IP地址為168.195.0.0的網絡劃分成若干子網,要求每個子網內有主機數為700臺,則該子網掩碼的計算方法如下(也是對應以上各基本步驟): 第1步,首先將子網中要求容納的主機數“700”轉換成二進制,得到1010111100。 第2步,計算出該二進制的位數為10位,即n = 10 第3步,將255.255.255.255從后向前的10位全部置“0”,得到的二進制數為“11111111.11111111.11111100.00000000”,轉換成十進制后即為255.255.252.0,這就是該要劃分成主機數為700的B類IP地址 168.195.0.0的子網掩碼。 3. 子網ID增量計算法 其基本計算步驟如下: 第1步,將所需的子網數轉換為二進制,如所需劃分的子網數為“4”,則轉換成成二進制為00000100;? 第2步,取子網數的二進制中有效位數,即為向缺省子網掩碼中加入的位數(既向主機ID中借用的位數)。如前面的00000100,有效位為“100”,為3位; 第3步,決定子網掩碼。如IP地址為B類1129.20.0.0網絡,則缺省子網掩碼為:255.255.0.0,借用主機ID的3位以后變為:255.255.224(11100000)0,即將所借的位全表示為1,用作子網掩碼。? 第4步,將所借位的主機ID的起始位段最右邊的“1”轉換為十進制,即為每個子網ID之間的增量,如前面的借位的主機ID起始位段為“11100000”,最右邊的“1”,轉換成十進制后為25=32。? 第5步,產生的子網ID數為:2m-2 (m為向缺省子網掩碼中加入的位數),如本例向子網掩碼中添加的位數為3,則可用子網ID數為:23-2=6個;? 第6步,將上面產生的子網ID增量附在原網絡ID之后的第一個位段,便形成第一個子網網絡ID 129.20.32.0;? 第7步,重復上步操作,在原子網ID基礎上加上一個子網ID增量,依次類推,直到子網ID中的最后位段為缺省子網掩碼位用主機ID位之后的最后一個位段值,這樣就可得到所有的子網網絡ID。如缺省子網掩碼位用主機ID位之后的子網ID為255.255.224.0,其中的“224”為借用主機ID后子網ID的最后一位段值,所以當子網ID通過以上增加增量的方法得到129.20.224.0時便終止,不要再添加了。
: 1、vim里怎么換行(命令模式和insert模式)? ?? ? ? ? ? ? ? ? 這個題命令模式下回車和a都不可以。? : 2、兩個有序列表連接成一個,最少比較次數? : 3、給一個前綴表達式,求中綴表達式? : 4、-73的補碼? : 5、函數f【1001】=0,f【1011】=1,問可以成為f的表達式的是?我選了異或? : 6、一數組和指向該數組的指針,指針自增后,求輸出。。。? :? : 問答題:? : 1、100用戶,每人好友約10個,如何準實時顯示好友狀態;當用戶增至100萬時候,會出現什么問題,你之前的方案是否仍然可行? : 2、javascript寫一個排序函數? : 3、javascript寫一個函數,每隔五秒調用某個函數? : 4、javascript寫一個函數,判斷輸入的字符串是否有效的email地址,用正則表達式? : 5、html和css方面:給出代碼,畫出網頁大體布局? : 6、評價令狐沖對岳不群的態度? : 7、隨便涂鴉,表達你的夢想和未來打算?
編程題必做題:? 兩種編碼方式G和U要進行轉換,已經有了兩種轉換函數GtoU(),和UtoG()可以進行轉換,但是現在不知道輸入的字符串是G還是U編碼,如果利用正確,則能得到正確的輸出,否則函數返回一個錯誤值。那么這時就可以調用另外一個函數,即可得到正確的轉碼。如果默認假設輸入的字符串是U編碼的,需要轉換為G編碼的,調用UtoG(), 如果輸入是G編碼的,則需要再次調用GtoU()。但是如果給的一組字符串都是G編碼的,那第一次嘗試總是錯誤的。為了避免這樣的問題,有人設計了一個根據先驗概率來嘗試第一次嘗試的算法:對前N次輸入都假設字符串是U編碼,然后對前N次嘗試進行統計,如果U編碼的次數大于等于50%,則下一次就假設是U編碼,調用UtoG(),否則假設下一次是G編碼,并調用GtoU()。? 你的任務是計算這樣的算法的正確率是多少?? 請編寫函數 double GorU(int N, int M, string input)? 其中N表示當前判斷是依據前N次的統計結果。M表示輸入的字符串的長度,input為輸入的字符串,假設輸入只能是字母G和U。? 例1:? 輸入:10,1,”U”? 輸出:1? ? 輸入:2,10,”UGUGGUUGUU”? 輸出:0.5? 根據算法,每次嘗試依次為 UUUUUGUUUU? ? 輸入:4,14,”UGUGUUGGGGGUUG”? 輸出:0.428571? 根據算法,每次依次嘗試為 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.上來就讓自我介紹了下。說了沒一分鐘就完了。。。我是不是應該準備一個自我介紹?
2.讓我介紹下項目。把簡歷上的3個項目從頭到尾給他介紹了下。。。但只是講了項目的內容。沒有講我自己做的東西。。。這個是不是應該好好準備下。
3.然后就開始問c和c++的基礎知識了。
大概問了以下內容: 1.服務器端socket的過程:socket,bind,listen,accept,send/recv,一開始不記得bind要不要,猶豫了下,他發現了,就揪著問,我就說是要的。client端不需要
2.問七層協議有哪七層。
3.問項目內容。和下層是怎么交互的。和上層又是怎么交互的。我就說和下層是使用它們提供的庫函數,直接read和write。網上層的話是是用socket進行通信的。然后問我們的socket是客戶端還是服務器端。 我想了一會,分析了一下(原來就沒想過這個問題),說是客戶端
1.c參數傳遞有哪幾種方式,有很么區別。。。我說:傳值,和傳指針。區別就不細說了,應該是回答正確了的。 2.c++里面的復制構造函數:自己實現的復制構造函數和默認的復制構造函數有什么區別?。 我說的是默認構造函數會將對象相對應的變量都會復制過來。而如果不想要全部復制或者有別的復制方法,則需要自己定義。 3.指針和引用的區別 引用必須要在定義的時候初始化,并且不能再修改。而指針可以不需要在定義的時候初始化,并且值可以修改。 4.C和C++混合開發中extern “C”的含義:這個沒回答出來。 5.問什么是僵尸進程。。。我回答成了孤兒進程。然后他就問什么是孤兒進程。我才想起來剛才回答的是孤兒進程。僵尸進程是什么呢?忘了。后來想起來,是運行完了等著回收的進程。 6.問了什么是字節對齊。我就說在struct里面,比如有一個char和一個int型的數,都應該對齊到int,四個字節。這個題沒怎么回答好。。。 7.問了const成員函數有什么限制。我說只能訪問const成員變量。 8.什么是死鎖。這個很簡單。 9.數據庫用過哪些:mysql,sql server。問為什么要建立索引。索引一定能提高效率嘛?什么時候會導致性能的降低? 10.介紹struts模式。我介紹了mvc 11.介紹下EJB,這個不太記得了。只是說是企業級應用bean,提高復用用的。 12, 大端模式,小端模式
128 位機器的sizeof int是多少。為了效率,16個byte(寄存器是16個byte)比較好,但是還應該和編譯器有關系。 1. 不能想當然的認為sizeof(int)一定是4或者8,64位cpu下與編譯器相關: 2. 64位cpu下指針的大小變為8個字節 3. sizeof(long)的值根據不同的編譯器可能會有變化
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)一定是某個數值,為以后程序向64位cpu移植時埋下隱患
64位是處理器一次能處理的字長,跟編譯器中的int沒有直接關系
整型量所占的長度和計算機的CPU字長有關,在16位機上整型量就占16位,在32位機上整型量就占32位,在64位機上整型量就占64位,即8個字節。
這種規定跟編譯器有關,就看編譯器怎么設計的了。
總結
- 上一篇: struct 与 class区别
- 下一篇: C++ struct construct