發哥(聯發科)上機考題目整理 - HackMD
文章推薦指數: 80 %
#error C++ compiler required. #endif 2. Explain “struct” and “union”. Ans: struct = 在C 上
ownedthisnote
Published
LinkedwithGitHub
Like35
Bookmark
Subscribe
Edit
#發哥(聯發科)上機考題目整理
[Ctest]
1.Explain"#error"
`Ans:`
可以用來強制中斷編譯器並且輸出訊息,這是寫給編譯器看的,通常搭配Cflag,CXXflag使用,在編譯時中斷錯誤的流程。
#error預處理程序指令用於指示錯誤。
如果找到#error指令編譯器將發出致命錯誤,並且跳過進一步的編譯過程。
以下是在glibc中可見的範例
#if!defined(__cplusplus)
#errorC++compilerrequired.
#endif
2.Explain"struct"and"union"
`Ans:`
struct=
在C上
自訂一種資料型態裡面可以包含多種資料型態,並且會按照程式中定義時擺放的順序在內存中排序,按照宣告的順序擺放。
編譯器會自動為struct的成員分配空間。
在C++上struct被擴展到可以內建method,跟class的意義非常類似,只是繼承與存取權限預設皆為public相反的class預設為private,以及class有template的擴充struct沒有
union一種特殊的所有內容都從內存開頭開始存取的資料型態,並且他的大小由內部最大的那個資料型態來定義。
會用同一個存儲空間,只能存儲最後一個成員訊息。
只給其中一個成員給值而使用其他值就會壞掉
補充:
typedef:保留字。
可以為資料型態建立別名。
ex:**typedefunsigneduint**;**typedefint(\*CMP)(int,int)**
enum:C語言提供自定型態為enum,是一組由識別字所代表的整數常數。
除非特別指定,不然都是由0開始,接下來遞增1。
ex:**enumweek{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday};**
3.Explain"volatile".Canweuse"const"and"volatile"inthesamevariable?Canweuse"volatile"inapointer?
`Ans:`
volatile加在變數前面。
是在指示編譯器每次對該變數進行存取時都要「立即更新」,不應該對其做任何最佳化。
因為有時候變數會先放在CPUregister中沒被寫到mem裡,若有其他人要透過他反應便會壞掉。
用volatile就可確保變數可以馬上反應
可以跟const合用,假設你要(監看)一個CPUflag時就是不錯的時機。
const限定一個變量不被改變
4.unsignedlongv1=0x00001111;
unsignedlongv2=0x00001202;
unsignedlongv;
v=v1&(~v2);
v=v|v2;
ask:thevalueofv?
`Ans:`
0x00001313
5.inta[5]={1,2,3,4,5};
int*p=(int*)(&a+1);
ask:thevalueof*(a+1),(*p-1)?
`Ans:`
(&a+1)=undefine
*(a+1)=2
(*p-1)=0
(這邊答案似乎有誤,(*p-1)應為undefined)
6.writeacode
a)setthespecificbit
b)clearthespecificbit
c)inversethespecificbit(0->1;1->0)
`Ans:`
```
#definesetBit(x,n)(x|=(1<
13.寫一個function可傳入正整數參數N,回傳1+2+3+…+N的和
`Ans:`
```=C
inlineintnSum(intN){
return(n+n*n)/2
```
14.reverseastring
`Ans:`
```=C
inlinevoidswap(char*a,char*b){
*a=*a^*b;
*b=*a^*b;
*a=*a^*b;
}
voidreversOne(char*s){
if(*(s+1)=='\0')
return;
reversOne(s+1);
swap(s,s+1);
}
voidreversAll(char*s){
if((s=='\0'))
return;
while(s+1!='\0'){
reversOne(s);
s++;
}
}
```
15.寫一個“標準”巨集MIN,這個巨集輸入兩個參數並返回較小的一個。
`Ans:`
```
#definemin(a,b)((a)[n],[1]->[n-1],…[n]->[0].
`Ans:`
a>b>c>d
```=c
voidrevers(Node*head,Node**newhead){
if(head->next==NULL){
*newhead=head;
return;
}
revers(head->next,newhead);
head->next->next=head;
head->next=NULL;
return;
}
```
```c=
/**
*Definitionforsingly-linkedlist.
*structListNode{
*intval;
*structListNode*next;
*};
*/
structListNode*reverseList(structListNode*head){
structListNode*cur=head,*pre=NULL,*next=NULL;
while(cur){
next=cur->next;
cur->next=pre;
pre=cur;
cur=next;
}
returnpre;
}
```
20.Findthepossibleerror
```=c
Intival;
Int**p;
Ival=*p;
```
`Ans:`
referenceapointertoaint
21.WhatisthepossibleerrorofbelowSQRfunction.
```=c
intSQR(volatileint*a){
return(*a)*(*a);
}
```
`Ans:`
aisvolatilesoa*amaynotbea^2
therightversion
```=c
intSQR(volatileint*a){
intb=*a
returnb*b;
}
```
22.用預處理指令#define聲明一個常數,用以表明1年中有多少秒(忽略閏年問題)
`Ans:`
#defineSECONDS_PER_YEAR(60*60*24*365)UL
23.
1.一個整型數(Aninteger)
2.一個指向整型數的指標(Apointertoaninteger)
3.一個指向指標的的指標,它指向的指標是指向一個整型數(Apointertoapointertoaninteger)
4.一個有10個整型數的陣列(Anarrayof10integers)
5.一個有10個指標的陣列,該指標是指向一個整型數的(Anarrayof10pointerstointegers)
6.一個指向有10個整型數陣列的指標(Apointertoanarrayof10integers)
7.一個指向函數的指標,該函數有一個整型參數並返回一個整型數(Apointertoafunctionthattakesanintegerasanargumentandreturnsaninteger)
8.一個有10個指標的陣列,該指標指向一個函數,該函數有一個整型參數並返回一個整型數(Anarrayoftenpointerstofunctionsthattakeanintegerargumentandreturnaninteger)
`Ans:`
1.intp
2.int*p
3.int**p
4.intp[10]
5.int*p[10]
6.int(*p)[10]
7.int(*p)(int)
8.int(*p[10])(int)
24.使用bitwiseoperation
```
voidswap(int*a,int*b)
{
*a=*a^*b;
*b=*a^*b;
*a=*a^*b;
}
```
35
×
Signin
Email
Password
Forgotpassword
or
Byclickingbelow,youagreetoourtermsofservice.
SigninviaFacebook
SigninviaTwitter
SigninviaGitHub
SigninviaDropbox
SigninviaGoogle
NewtoHackMD?Signup
延伸文章資訊
- 1聯發科線上測驗、MTK驗證PTT在PTT/mobile01評價與討論
聯發科C 語言測試題目. MediaTek Interview Questions. Okay 上一篇才剛發沒有多久, 趁著還稍微記得題目內容來記錄一下, 希望可以幫到迷途的孩子們 ...
- 2[請益] 發哥上機考準備 - 科技業板 | Dcard
... 收到發哥FW面試邀約,要上機考C語言,請問各位大大都怎麼準備?目前會刷刷題練練手,但聽面試過的朋友都說不太重要? - 工作,聯發科,MTK,面試.
- 3新竹聯發科軟韌一面 - 葬る静寂
今天去聯發科面試軟韌體感覺算意外地順利(應該 ... c) int **a; // A pointer to a pointer to an integer ... 跟我之前去聯發科參加活動時的...
- 4軟韌體工程師面試考題- 程式碼考題 - RainD
Int a[] = {6, 7, 8, 9, 10}; Int *p=a; *(p++)+=123; *(++p)+=123;. Ans:a[] = {129, 7, 131, 9, 10} (...
- 5發哥(聯發科)上機考題目整理 - HackMD
#error C++ compiler required. #endif 2. Explain “struct” and “union”. Ans: struct = 在C 上