好將來2017秋招筆試真題ios
1.一個C語言程序在一臺32位機器上運行。程序中定義了三個變量xyz,其中x和z是int型,y爲short型。當x=127,y=-9時,執行賦值語句z=x+y後,xyz的值分別是編程
A:X=0000007FH,y=FFF9H,z=00000076H數組
B:X=0000007FH,y=FFF9H,z=FFFF0076H網絡
C:X=0000007FH,y=FFF7H,z=FFFF0076H測試
D:X=0000007FH,y=FFF7H,z=00000076Hspa
正確答案: D線程
X = 127 (int 佔 4字節 32位) 換算16進制 就是 0000007FH指針
Z = 127 - 9 = 118同上 , 16 進制 是 00000076Hcode
Y = -9 二進制用補碼錶示blog
原碼:1000 0000 0000 1001
反碼:1111 1111 1111 0110
補碼:反碼+1
1111 1111 1111 0111 --> F F F 7
2. 關於進程狀態的說法,下列錯誤的是
A:處於就緒狀態的進程,當進程調度程序爲之分配了處理機後,該進程便由就緒狀態變爲執行狀態
B:當前進程因發生某事件而沒法執行,如訪問已被佔用的臨界資源,就會使進程由執行狀態轉變爲阻塞狀態
C:當前進程因時間片用完而被暫停執行,該進程便由執行狀態轉變爲阻塞狀態
D:處於掛起狀態的進程不能接收處理機調度
正確答案: C
A,對。處於就緒狀態的進程,當進程調度程序爲之分配了處理機後,該進程便由就緒狀態變爲執行狀態;B,對。當前進程因發生某事件而沒法執行,如訪問已被佔用的臨界資源,就會使進程由執行狀態轉變爲阻塞狀態;C,錯。當前進程因時間片用完而被暫停執行,該進程便由執行狀態轉變爲就緒狀態;D,對。處於掛起狀態的進程不能接收處理機調度
3. 同一進程下的線程不能夠共享的是
A:stack
B:data section
C:code section
D:file fd
正確答案: A
4. 在OSI 7 層模型中,網絡層的功能有
A:確保數據的傳送正確無誤
B:肯定數據包如何轉發與路由
C:在信道上傳送比特流
D:糾錯與流控
正確答案: B
A 數據鏈路層 ;B 網絡層 ;C 物理層 ;D 數據鏈路層
5.應用程序PING 發出的是_______報文
A:TCP 請求報文
B:TCP 應答報文
C:ICMP 請求報文
D:ICMP 應答報文
正確答案: C
ICMP (Internet Control Message Protocol) Internet控制報文協議, 用於在IP主機、路由器 之間傳遞控制消息。控制消息是指網絡 不通、主機 是否可達、路由 是否可用等網絡自己的消息。
6. 使用traceroute命令測試網絡時能夠
A:檢驗鏈路協議是否運行正常
B:檢驗目標網絡是否在路由表中
C:檢驗應用程序是否正常
D:顯示分組到達目標路徑上通過的各路由器
正確答案: D
UNIX命令traceroute能夠顯示分組到達目標所通過的各個路由器的IP地址和到達目標的時間,經過traceroute能夠知道從你的計算機到互聯網另外一端的主機走的什麼路徑。在MS Windows中對應的命令爲tracert。
7. 主機甲向主機乙連續發送了兩個TCP報文段,其序號分別爲70和100。下列錯誤的是
A:第一個報文段攜帶了30個字節的數據
B:主機乙收到第一個報文段後發回的確認中的確認號是100
C:若是主機乙收到第二個報文段後發回的確認中的確認號是180,那麼甲發送的第二個報文段中的數據有80字節
D:若是甲發送的第一個報文段丟失了,但第二個報文段到達了乙,乙在第二個報文段到達後向甲發送確認,這個確認號爲100
正確答案: D
D選項:若是甲發送的第一個報文段丟失了,但第二個報文段到達了乙,乙在第二個報文段到達後向甲發送確認,這個確認號爲70
8. 在單鏈表中刪除指針p所指結點的後繼結點,則執行________操做
A:p->next=p->next->next
B:p->next=p->next
C:p=p->next->next
D:p=p->next;p->next=p->next->next
正確答案: A
選擇A p->next=p->next->next 下下個節點把下個節點給截斷了
9.表達式(a-b)*(c+5)的後綴式是
A:a b c 5 + * -
B:a b – c + 5 *
C:a b c - * 5 +
D:a b- c 5 + *
正確答案: D
首先要了解什麼是後綴式,後綴式是一種指把運算符號寫在運算數後面的表達式。最大的特色是省去了括號。
例如:a+b的後綴式爲ab+;
後綴式的解法:
1.從左到右找到第一個運算符
2.使用該運算符計算其前面緊挨的兩個數值並做爲一個新的運算數
3.依次尋找下一個運算符並計算其前兩「個」運算數
直接應用對錶達式進行計算。
10. 如下說法正確的有?
A:7月有30天
B:8月有30天
C:2014年2月有28天
D:2月有28天
正確答案: C D 你的答案: C (錯誤)
我以爲這個題目應該選A、B、C、D。7月有30天,由於7月一共有31天,因此天然是有30天的,就比如七月是有這個能力有30天的。若是按照這種思路,那麼我認爲四個選項都對。若是AB不對,那D也就不對了,因此我的以爲要麼選ABCD,要麼選C
11. [編程題]字符串中找出連續最長的數字串
讀入一個字符串str,輸出字符串str中的連續最長的數字串
輸入描述:
個測試輸入包含1個測試用例,一個字符串str,長度不超過255。
輸出描述:
在一行內輸出str中裏連續最長的數字串。
輸入例子:
abcd12345ed125ss123456789
輸出例子:
123456789
#include<iostream> #include<string.h> using namespace std; int main() { int i=0, j; int num1=0, num2=0; int index1=0, index2=0; char str[255]; char flag=0; scanf("%s", str); while(str[i] != '\0') { num2=0; while(str[i]>='0' && str[i]<='9') { num2++; index2 = i; i++; } if(num2>num1) { num1 = num2; index1 = index2; } i++; } for(j=index1-num1+1; j<=index1; j++) cout << str[j]; cout << endl; return 0; }
12. [編程題]n個數裏最小的k個
讀入一個字符串str,輸出字符串str中的連續最長的數字串
輸入描述:
每一個測試輸入包含空格分割的n+1個整數,最後一個整數爲k值,n
不超過100。
輸出描述:
輸出n個整數裏最小的k個數。升序輸出
輸入例子:
3 9 6 8 -10 7 -11 19 30 12 23 5
輸出例子:
-11 -10 3 6 7
#include<iostream> #include<vector> #include<algorithm> using namespace std; int main() { int a[100] = {0}; int num=0; vector<int> b; while (scanf("%d",&a[num]) != EOF && getchar() != '\n')//錄入帶空格的數字流。 num++; int n = num+1; int k = a[num]; for(int i=0;i<n-2;i++) b.push_back(a[i]); sort(b.begin(),b.end()); for(int i=0; i<k-1; i++) { cout << b[i] << ' '; } cout<<b[k-1]<<endl; return 0; }
13. [編程題]n個數裏出現次數大於等於n/2的數
輸入n個整數,輸出出現次數大於等於數組長度一半的數。
輸入描述:
每一個測試輸入包含 n個空格分割的n個整數,n不超過100,其中有一個整數出現次數大於等於n/2。
輸出描述:
輸出出現次數大於等於n/2的數。
輸入例子:
3 9 3 2 5 6 7 3 2 3 3 3
輸出例子:
3
#include <iostream> #include <string.h> #include <math.h> using namespace std; int main() { char str[202]; int a[101];//存儲數字,這裏能夠進行動態開闢數組 gets(str); int len = strlen(str); int i,j=0; for(i=len-1;i>=0;) { int sum=0; int ling = -1;//判斷個、10、百...位 int flag = 0; while(str[i]!=' ' && i>=0){ if(str[i]!='-') { ling++; sum+=(str[i]-48)*pow(10,ling); } else{ flag = 1; } i--; } if(flag) a[j] = sum*(-1); else a[j] = sum; j++; i--; } for(i=0;i<j;i++) { int account= 1; int number; for(int k=i+1;k<j;k++) { if(a[i]==a[k]) { account++; number = a[k]; } } if(account>=j/2){ cout<<number; break; } } return 0; }