Monday, March 5, 2012

HTC面試考古題

(資料整理自ptt tech_job版)

C:指標的觀念, 如單, 雙指標, int指標 與char指標轉換後的位址處理, 字元字串,一維陣列,二維陣列的運用和宣告方式(int *p,char *p,*p++,(*p)++),傳值和傳址,轉型,static,#define,#ifdef,#ifndef

C++: 物件導向的觀念(建構、解構、繼承、多型...等), 建構 解構順序, static, const, extern, virtual function,繼承,動態配置變數, 陣列, public, private, 轉型, reference type, auto_ptr, 繼承時候的建構解構順序, 變數的可視範圍(scope)

JAVA :
JAVA就更偏物件導向了,雖然還是有一些指標和字串,主要有考
Thread,Runnable,public,private,protected,繼承,函式的多型,virtual,
try and catch and finally的使用,身為Java苦手,大概爆掉了QQ

智力測驗數列: 不是mod就是差或是交叉的差



考完後有面試, 會被問到跟OS, 行程, 線程, 記憶體管理出狀況時, 如何了解問題並判斷原因跟解法.


1.填充題,利用跳脫字元印出含有 " " 以及 \ 的符號
2.填充題,輸入任意三個整數,最後可以輸出最小的那個
int Min(int a,int b, int c)
{
(a<=b && a<=c) ? return a : ________________
}
應該是這樣@@ ,總之似乎要考懂得 ? : 的用法
3.計算題,continue的用法
給你一段迴圈,裡面有包含continue、if的敘述,問你最後執行結果是啥
ex: for i=0;i<=15;i++
if i<=4 && i>=6 continue
if i>=10 printf("XXX")
類似這種的

4.計算題,給你兩個.h檔 a.h b.h
a.h會用到 b.h的參數
b.h會用到 a.h的參數
要如何修改程式碼使得編譯器不會產生錯誤
有給提示:用ifndef

5.計算題,考#define位置的觀念
#define xxx yyy
函數A
函數B

函數A
#define xxx yyy
函數B
兩種情況時,A B輸出的結果會不會有差別?

6.填充題,指標與雙重指標觀念
且定義 int* p ;
int** pp;
考你類似 *p+1=? **p+2=?
(這部分有點忘了~不確定題目是不是這樣@@)

7.填空題,定義函數
給你一段程式碼,要你定義一個函數以符合最後結果
這題好像有用到C++的語法~看不太懂@@"
所以就直接跳過了

8.計算題,無窮遞迴觀念
void Res(void)
{
printf("start\n");
Res();
printf("End\n");
}
有兩小題吧
a.問你這個函數會不會一直跑下去不會停止? 為什麼?
b.最後會不會印出 End?
(會 stack overflow;不會)

9.計算題,考變數生命週期的觀念
給你一段程式碼
問你local.global.static變數最後的值會是多少?
void Res(void)
給你一個陣列Arr[3]={100,200,300};

10.問答題,指標變數的錯誤?
給你一段程式碼,其中有包含迴圈以及指標變數 char*
程式碼compile會過,但最後結果並不是原本想要的那樣
問你原因出在哪? 並修改之
(注意char* a=""是const char* ,不能改)

11.忘了

12.計算題,寫一個函數,如何不用遞迴的方式寫出費伯納西數列(Fibonacci)?
ex: Fib(7)=13,且不能用遞迴



.

No comments:

Post a Comment