嵌入式初級面試題
姓名: 日期: 開始時間:
(答題時間60分鐘,答題過程中請不要上網查詢資料,不可帶走答卷)
1:設float a=2,b=4,c=3;,以下C語言表達式與代數式(a+b)+c計算結果不一致的是( )[3分]
A.(a+b)c/2
B. (1/2)*(a+b)c
C. (a+b)c*1/2
D.c/2(a+b)
2:為了向二進制文件尾部增加數據,打開文件的方式應采用( )[3分]
A.“ab”
B.“rb+”
C.“wb”
D.“wb+”
3:下述程序執行后的輸出結果是( )[3分]
main()
{int x=‘f’; printf( “%c\n”,‘a’+(x-‘a’ +1));}
A.g
B.h
C.i
D.j
4:C語言中,下列運算符優先級高的是( )[3分]
A.!
B.%
C.>>
D.==
5:數組定義為“int a[4];”,表達式( )是錯俁的是().[3分]
A.*a
B.a[0]
С. а
D.a++
6:執行語句“k=7>>1;”后,變量k的當前值是( )[3分]
A.15
B.31
C.3
D.1
7.定義函數時,缺省函數的類型聲明,則函數類型取缺省類型( )[3分]
A. void
B. char
C. float
D. int
8:若main()函數帶參數,參數個數多是()[3分]
A.O
B.1
C.2
D.3
9:若有宏定義:#define MOD(x, y) x%y則執行以下語句后的輸出結果是()[3分]
int a=13, b=94;
printf(“%d\n”, MOD(b, a+4));
A.5
B.7
C.9
D.11
10:下列各個錯誤中,哪個不屬于編譯錯誤( )[3分]
A.改變x 原值3為5,寫作“×==5;”
B.花括號不配對
C.復合語句中的后一條語句后未加分號
D.變量有引用、無定義
11:下列程序段運行后,x的值是( )[3分]
a=1;b=2;x=0;
if(!(–a))x–;
if(!b)x=7;else ++x;
A.0
B.3
C.6
D.7
12:設#define N3;define Y(n)((N+1));則表達式2(N+Y(5+1))的值是() [3分]
A.42
B.48
c.54
D.出錯
13:若定義了char ch[]={" abc\0def"},*p = ch;則執行printf(“%C”,*p+4);語句的輸出結果是( )[3分]
A. def
B.d
C.e
D.O
14:下列轉義字符中錯誤的是()[3分]
A.‘\000’
B.‘\14’
C.‘\x111’
D.‘\2’
15:算術運算符,賦值運算符和關系運算符的運算優先級按從高到低依次為( )[3分]
A.算術運算、賦值運算、關系運算
B.算術運算、關系運算、賦值運算
C.關系運算、賦值運算、算術運算
D.關系運算、算術運算、賦值運算
16:設define N3;#define Y(n)(N+1)n);則表達式2(N+Y(5+1))的值是( )[3分]
A.42
B.48
C.54
D.出錯
17:表達式strcmp(“3.14”,“3.278”)的值是一個( )[3分]
A.非零整數
B.浮點數
C.0
D.字符
18:設 struct
{
short a;
char b;
float c;
}cs;
則 sizeof(cs) 的值是( )【3分】
A. 4
B. 5
C. 6
D. 7
19:若變量已正確定義,表達式(j=3, j++)的值是( )【3分】
A. 3
B. 4
C. 5
D. 0
20:C 語言中運算對象必須是整型的運算符是( )【3 分】
A.%
B./
C.!
D.**
21:多態類中的虛函數表是 Compile-Time 還是 Run-Time 時建立的?說說這兩種的區別【5分】
22:給出下面這段程序的運行結果【5 分】
#include
void main()
{ int c;while((c=getchar())!=‘\n’)switch(c-‘2’){ case 0:case 1:putchar(c+4);break;case 2:putchar(c+4);break;case 3:putchar(c+3);break;default: putchar(c+2);break;}printf(“\n”);
}
運行時輸入:2473,輸出結果是:
23:寫一語句實現x是否為2的若干次冪的判斷。[6分]
24:請簡單描述一下什么是IIC總線?標準速率是多少?快速速率是多少?總線設備地址是幾位?通信總線有幾根,分別是什么?[6分]
25:請問SPI通信總線有幾根,分別是什么?[6分]
26:請問USB通信總線的通信速率有幾種?分別是多少?[6分]
27:OSI模型是指哪7層?TCP和UDP是OSI模型的第幾層,說說他們的區別是什么?[6分]
c++測試題
一、程序閱讀題
(1)下面程序的輸出結果為
#include <iostream>
using namespace std;void fun(int x, int *y, int &z)
{x = *y + z;*y = x + z;z = x + *y;
}int main()
{int a = 1, b = 2, c = 3;fun(a, &b, c);cout << a << "," << b << "," << c;return 0;
}
(2) 下面程序的的輸出結果為
#include<iostream>
using namespace std;int foo(int n)
{int temp;switch(n){case 0: return 1;case 1: return 1;default:temp = (n - 1)*foo(n - 2);cout << temp << " ";return temp;}
}int main()
{foo(6);return 0;
}
二、編程題
(3)實現字符串類“-”運算符的重載,給定兩個字符串 str1 和 str2,str1-str2 的輸出兩個字符串的最長公共子串。(30 分)
(4)給一個01矩陣,1代表是區域像素,0代表空白,如果兩個1相鄰,那么這兩個1屬于同一個區塊。我們只考慮上下左右為區塊,判斷區塊個數。例如:以下輸入數組,對應的輸出為3。(30分)
[1,1,0,0,0],
[0,1,0,1,1],
[0,0,0,1,1],
[0,0,0,0,0],
[0,0,1,1,1]
武漢開目軟件c++軟件工程師考題
一、選擇題(前10題每題2.5分,后5題每題4分,共45分)
1:設整型變量n=2,則執行下列語句后,浮點型變量b的值不為0.5的是()
A)b=1.0/n B) b=(float)(1/n) C)b=1/(float)n D)b=1/(n*1.0)
2:在C語言中對一維數組的正確定義為()
A)int a(10); B) int n=10,a[n]; C) int n:a[n]; D)#define N 10 int a[N];
3:若有說明:int n=2; *p=&n; *q=p; 則以下非法的賦值語句是()
A)p=q B)*p=*q C)n=*q D)p=n
4:在函數調用時,以下說法正確的是()
A)函數調用后必須帶回返回值
B)實際參數和形式參數可以同名
C)函數間的數據傳遞不可以使用全局變量
D)主調函數和被調函數總是在同一個文件里
5.設有以下語句: int x=10; x+=3+x%(3),則x的值是()
A)14
B)15
C)11
D)16
6.在C語言中,以下敘述不正確的是()
A)在C程序中,無論是整數還是實數,都能被準確無誤地表示
B)在C程序中,變量名代表存儲器中的一個位置
C)靜態變量對生存期與整個程序的生存期相同
D)C語言中變量必須先定義后引用
7、若執行下面面對程序從鍵盤輸入9,則輸出結果是()
#include<stdio.h>
void main()
{
int n;
scanf(“%d”,&n);
if(n++<10) printf(“%d\n”,n);
else printf(“%d\n”,n–);
}
A)11
B)10
C)9
D)8
8、以下哪個結構可以用來存儲圖?()
A) 棧
B) 二叉樹
C) 隊列
D) 鄰接矩陣
9、設棧S和隊列Q的初始狀態為空,元素e1, e2, e3, e4, e5, e6依次通過棧S,一個元素出棧后進入隊列Q,假設出隊的順序為e2, e4, e3, e6, e5, e1,那么棧S的容量至少應該為()。
A) 2
B) 3
C) 4
D) 5
10、設某算法的時間復雜度函數的遞推方程是T(n)=T(n-1)+n(n為正整數)及T(0)=1, 則該算法的時間復雜度為()。
A) O(log n)
B) O(n log n)
C) O(n)
D) O(n*n)
11、為了統計一個非負整數的二進制中1的個數,代碼如下:
int CountBit(int x)
{int ret=0;while(x){ret++;_______;}return ret;
}
則空格內要填入的語句是( )
A) X>>=1
B) x&=x-1
C) x|=x>>1
D) x<<=1
12、對于入棧順序為a,b,c,d,e,f,g的序列,下列( )不可能是合法的出棧序列。
A) a,b,c,d,e,f,g
B) a,d,c,b,e,g,f
C) a,d,b,c,g,f,e
D) g,f,e,d,c,b,a
13、給定含有n個不同的樹的數組L=<x1, x2,…, xn>。如果L中存在xi(1<=i<=n)使得x1<x2<…<xi-1< xi >xi+1>…>xn,則稱L是單峰的,并稱xi是L的“峰頂”。現在已知L是單峰的,請將a~c三行代碼補充到算法中使得算法正確找到L的峰頂。
a. Search(k+1,n)
b. Search(1,k-1)
c. return L[k]
Search(l,n)
- k<-[n/2]
- if L[k] > L[k-1] and L[k] > L[k+1]
- then ___________
- else if L[k] > L[k-1] and L[k] < L[k+1]
- then ___________
- else ___________
正確的填空順序是( )
A) c, a, b
B) c, b, a
C) a, b, c
D) b, a,c
14、一個平面的法線是指與該平面垂直的直線。過點(1,1,1)、(0,3,0)、(2,0,0)的平面的法線是:
A) 過點(1,1,1)、(2,3,3)的直線
B) 過點(0,1,0)、(-3,2,1)的直線
C) 過點(2,0,0)、(5,2,1)的直線(答案)
D) 過點(1,1,1)、(3,2,1)的直線
15、有 A、B、C、D、E、F 6 個集裝箱,準備用甲、乙、丙三輛卡車運送,每臺卡車一次運兩個,若卡車甲不能運 A 箱,卡車乙不能運 B 箱,此外無其它任何限制,要把這 6 個集裝箱分配給這 3 臺卡車運送,則不同的分配方案的種數為()
A) 168
B) 84
C) 56
D) 42 (答案)
二、填空題
1、輸入一個字符,判斷該字符是數字、字母、空格還是其他字符(6分)
main()
{char ch;ch = getchar();if (__________){printf("這是一個英文字母");}else if (__________){printf("這是一個數字");}else if (__________){printf("這是一個空格");}else{printf("這是其他字符");}
}
2、用指針做函數參數,對輸入對兩個整數按大小順序輸出(7分)
void swap(int *p1, int *p2)
{int p;p = ________;________ = ________;________ = p;
}main()
{int a, b;scanf("%d,%d", ________);if(a<b)swap(________);printf("\n%d,%d\n", a, b);
}
3、寫出下面程序的輸出結果。(7分)
int main()
{int a[6]={1,2,3,4,5,6};int pi=0;int pj=5;int t,i;while(pi<pj){t=a[pi];a[pi]=a[pj];a[pj]=t;pi++;pj--;}for(i=0;i<6;i++){cout << a[i] << ",";}cout << endl;return 0;
}
三、編程題
1、編寫一個求解最大公約數的函數。(10分)
int gcd(int a, int b)
{
}
2、編寫一個int類型的動態數組“追加”方法(10分)
3、編寫一個函數,實現標準C語言atoi函數的功能(字符串轉換成整數)(14分)
外包公司面試題
題目1:編寫一個函數,輸入為一個字符率,將其逆序后輸出
題目2:編寫一個函數,統計在一個輸入字符串中各個不同字符出現的頻率
題目 3: 當前有如下 Json:
json
{"IP": "XXXXXXXXX","Port": "XXX","Info": {"name": "XXXXXXXX","phone": "XXXXX"}
}
請創建一個線程,接收來自192.168.8.1:8000的UDP報文,內容為上述Json。
解析報文內容,將其中的“Info”信息轉發至報文指定的“IP”(IP地址)和“Port”(端口)上
C++軟件開發工程師筆試題(NOKOV度量)
一、填空題(30分)
-
數組的分類主要是:____、____兩類。(2分)
-
程序運行時的內存分區為:——、——、——、——、——。(5分)
<