目前日期文章:201611 (5)

瀏覽方式: 標題列表 簡短摘要

第一題  : 請擷取出Input中的第七個bit值?

 

-------------------------------------------------------------------------------------------------------------

 

Ans :

此題題意簡單明瞭,解法也不複雜。

步驟一 : 加上一個Mask遮罩( & ),只保留欲取出的bit位置。

步驟二 : 向右shift (7-1) 位元,剩下的就是你要的答案。

 

 

 

 

第二題 : 請擷取出Input中的第N個bit值?

-------------------------------------------------------------------------------------------------------------

 

 

Ans : 此題為上題的延伸,只要仔細觀察一定可以看出規則出來。

Hint : 可用 pow (x, y )  = x^y 來快速算出次方。

 

文章標籤

C 發表在 痞客邦 留言(0) 人氣()

Q :   請寫出將會印出的值

 

 

 

-------------------------------------------------------------------------------------------------------------

 

 

Ans :

此題為簡單的送分題,sizeof函數回傳該變數所佔的byte數並印出,

不同的資料型態的size為基本觀念須熟記。

另外需注意本題的兩個陷阱

1.  計算字串陣列的size大小時,須連同"空白"與最後的"空字符"(Null character) 也一同加進去。

2.  sizeof( *p ) 所代表的是該指標所指向位置的資料型態,此題*p所指向的是char,所以也等於sizeof(char)

     (另外 sizeof (p) 代表的又是不同的意思,可自行寫code試看看結果)

 

 

故答案為

 

文章標籤

C 發表在 痞客邦 留言(0) 人氣()

Q :   請寫出將會印出的值

 

 

Ans :  

首先,*p = a 代表的是 pointer p 指向陣列a的記憶體位置,

而其值也就是該陣列的第一位元,所以此時 *p = 1 。

 

而之後的兩個運算式又可看成

*p++   += 100;

*++p   += 100;

 

++ 在後 優先權最低  先取值 +=100 再 指標後移。

++ 在前 優先權最高  先指標後移 再取值 +=100。

 

故答案為 

 

文章標籤

C 發表在 痞客邦 留言(0) 人氣()

此篇分享的是難度較高的 pointer 考題。

 

pointer類型的題目在C語言的面試考題中幾乎是必考!

而之所以會成為主管最愛考題原因有三:

1. 題目簡單明瞭,不會題意不清。

2. 鑑別度高,對於少寫程式的人來說相對陌生。

3. 變化性高,可隨意變換題目,不易重複。

 

以下為真實面試考題分享 :

 

題目

請寫出將會印出的兩行字串


答案

Ans: 此題須同時計算*p值與s字串,

第一行字串為 : 0113234

第二行字串為 : 0123456


解析

首先, *p = s 所代表的含意為 pointer p 指向字串s的第一個位址,

字串s第一個位址值為0,而接下來一連串的運算可分成四類:

*p++   =   *(p++) 先取值 後指標下移
*++p   =   *(++p) 先指標下移 後取值
++*p   =   ++(*p) 先值+1 後取值
(*p)++ 先取值 後值+1

 

雖然看似複雜,但仔細觀察還是可看出規則,

*p = 取值

  p = 取指標位址

++在前  =  先加1再取值

++在後  =  先取值後加1

 

多練習幾遍,以後看到此類型的題目肯定能輕鬆取分。

 

延升閱讀

科技業筆試 常考觀念題  

1. 指標  2. 資料型態 3. 位元運算

國外面試考什麼

LeetCode 練習 - Two Sum 解析 (Easy)    

LeetCode 練習 - Add Two Numbers 解析 (Medium)

 

文章標籤

C 發表在 痞客邦 留言(2) 人氣()

此篇只涉及C語言的基礎概念,熟悉C語言的開發者可跳過此篇。

 

在應徵程式設計師的面試中,常會有該語言的專業測驗,

而專業測驗的成績更會直接影響面試結果,

故在面試前好好熟悉該語言是非常重要的。

 

 

以下為真實面試考題分享:

第一題 : 請寫出將會印出的值

 

Ans : 答案為-2,相信大家都答得出來。

 

第二題 : 請寫出將會印出的值

 

Ans : 答案為15,當寫成 if ( a = 10)時,  a會被改值為 10

而又因為括號內為大於0的值 = True , 故印出的值為 a + b 

 

 

若以上兩題都能輕鬆解答的人,代表您對於C語言有一定程度的理解,

而第三題考的是 您對於程式熟悉度與coding的靈活性。

 

 

 

第三題 : 以上兩題可看出 (a == 10) 與 (a = 10),此兩條件式的誤植,

會造成答案的巨大差異,請問有何種方式可完全避免此問題?

 

Ans :  將條件式寫相反 (10 == a), 程式依然可正確執行。

而若誤植為 (10 = a),因為10無法賦予值,將無法編譯成功。

 

文章標籤

C 發表在 痞客邦 留言(0) 人氣()