貢獻(xiàn)一套ios筆試題和面試題答案

大風(fēng)車(chē)考試網(wǎng)

  今天大風(fēng)車(chē)網(wǎng)小編貢獻(xiàn)給大家的是一套ios筆試題,如果你也感興趣,歡迎大家收藏和分享。
  1.main()

  {

  int a[5]={1,2,3,4,5};

  int *ptr=(int *)(&a+1);

  printf(“%d,%d”,*(a+1),*(ptr-1));

  }

  答:2,5

  *(a+1)就是a[1],*(ptr-1)就是a[4],執(zhí)行結(jié)果是2,5

  &a+1不是首地址+1,系統(tǒng)會(huì)認(rèn)為加一個(gè)a數(shù)組的偏移,是偏移了一個(gè)數(shù)組的大小(本例是5個(gè)int)

  int *ptr=(int *)(&a+1);

  則ptr實(shí)際是&(a[5]),也就是a+5

  原因如下:

  &a是數(shù)組指針,其類(lèi)型為 int (*)[5];

  而指針加1要根據(jù)指針類(lèi)型加上一定的值,不同類(lèi)型的指針+1之后增加的大小不同。

  a是長(zhǎng)度為5的int數(shù)組指針,所以要加 5*sizeof(int)

  所以ptr實(shí)際是a[5]

  但是prt與(&a+1)類(lèi)型是不一樣的(這點(diǎn)很重要)

  所以prt-1只會(huì)減去sizeof(int*)

  a,&a的地址是一樣的,但意思不一樣

  a是數(shù)組首地址,也就是a[0]的地址,&a是對(duì)象(數(shù)組)首地址,

  a+1是數(shù)組下一元素的地址,即a[1],&a+1是下一個(gè)對(duì)象的地址,即a[5].

  2.以下為Windows NT下的32位C++程序,請(qǐng)計(jì)算sizeof的值

  void Func ( char str[100] )

  {

  sizeof( str ) = ?

  }

  void *p = malloc( 100 );

  sizeof ( p ) = ?

  這 題很常見(jiàn)了,Func ( char str[100] )函數(shù)中數(shù)組名作為函數(shù)形參時(shí),在函數(shù)體內(nèi),數(shù)組名失去了本身的內(nèi)涵,僅僅只是一個(gè)指針;在失去其內(nèi)涵的同時(shí),它還失去了其常量特性,可以作自增、自減等 操作,可以被修改。Windows NT 32位平臺(tái)下,指針的長(zhǎng)度(占用內(nèi)存的大小)為4字節(jié),故sizeof( str ) 、sizeof ( p ) 都為4。

  3.還是考指針,不過(guò)我對(duì)cocoa的代碼還是不太熟悉

  大概是這樣的

  - (void)*getNSString(c*t NSString * inputString)

  {

  inputString = @”This is a main test\n”;

  return ;

  }

  -main(void)

  {

  NSString *a=@”Main”;

  NSString *aString = [NSString stringWithString:@"%@",getNSString(a)];

  NSLog(@”%@\n”, aString);

  }

  最后問(wèn)輸出的字符串:NULL,output在函數(shù)返回后,內(nèi)存已經(jīng)被釋放。

  4.用預(yù)處理指令#define聲明一個(gè)常數(shù),用以表明1年中有多少秒(忽略閏年問(wèn)題)

  #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL

  我在這想看到幾件事情:

  •; #define 語(yǔ)法的基本知識(shí)(例如:不能以分號(hào)結(jié)束,括號(hào)的使用,等等)

  •; 懂得預(yù)處理器將為你計(jì)算常數(shù)表達(dá)式的值,因此,直接寫(xiě)出你是如何計(jì)算一年中有多少秒而不是計(jì)算出實(shí)際的值,是更清晰而沒(méi)有代價(jià)的。

  •; 意識(shí)到這個(gè)表達(dá)式將使一個(gè)16位機(jī)的整型數(shù)溢出-因此要用到長(zhǎng)整型符號(hào)L,告訴編譯器這個(gè)常數(shù)是的長(zhǎng)整型數(shù)。

  •; 如果你在你的表達(dá)式中用到UL(表示無(wú)符號(hào)長(zhǎng)整型),那么你有了一個(gè)好的起點(diǎn)。記住,第一印象很重要。

  寫(xiě)一個(gè)“標(biāo)準(zhǔn)“宏MIN

  ,這個(gè)宏輸入兩個(gè)參數(shù)并返回較小的一個(gè)。

  #define MIN(A,B)

  ((A) <= (B) ? (A) : (B))

  這個(gè)測(cè)試是為下面的目的而設(shè)的:

  •;

  標(biāo)識(shí)#define在宏中應(yīng)用的基本知識(shí)。這是很重要的,因?yàn)橹钡角度?inline)操作符變?yōu)闃?biāo)準(zhǔn)C的一部分,宏是方便產(chǎn)生嵌入代碼的唯一方

  法,對(duì)于嵌入式系統(tǒng)來(lái)說(shuō),為了能達(dá)到要求的性能,嵌入代碼經(jīng)常是必須的方法。

  •; 三重條件操作符的知識(shí)。這個(gè)操作符存在C語(yǔ)言中的原因是它使得編譯器能產(chǎn)生比 if-then-else

  更優(yōu)化的代碼,了解這個(gè)用法是很重要的。

  •; 懂得在宏中小心地把參數(shù)用括號(hào)括起來(lái)

  •;

  我也用這個(gè)問(wèn)題開(kāi)始討論宏的副作用,例如:當(dāng)你寫(xiě)下面的代碼時(shí)會(huì)發(fā)生什么事?

  least = MIN(*p++, b);

  結(jié)果是:

  ((*p++) <= (b) ? (*p++) : (*p++))

  這個(gè)表達(dá)式會(huì)產(chǎn)生副作用,指針p會(huì)作三次++自增操作。

  5.寫(xiě)一個(gè)委托的interface

  @protocol MyDelegate;

  @interface MyClass: NSObject

  {

  id delegate;

  }

  // 委托方法

  @protocol MyDelegate

  - (void)didJobs:(NSArray *)args;

  @end

  6.寫(xiě)一個(gè)NSString類(lèi)的實(shí)現(xiàn)

  + (id)initWithCString:(c*t char *)nullTerminatedCString encoding:(NSStringEncoding)encoding;

  + (id) stringWithCString: (c*t char*)nullTerminatedCString

  encoding: (NSStringEncoding)encoding

  {

  NSString *obj;

  obj = [self allocWithZone: NSDefaultMallocZone()];

  obj = [obj initWithCString: nullTerminatedCString encoding: encoding];

  return AUTORELEASE(obj);

  }

  7.obj-c有多重繼承么?不是的話(huà)有什么替代方法?

  cocoa 中所有的類(lèi)都是NSObject 的子類(lèi)

  多繼承在這里是用protocol 委托代理 來(lái)實(shí)現(xiàn)的

  你不用去考慮繁瑣的多繼承 ,虛基類(lèi)的概念.

  ood的多態(tài)特性 在 obj-c 中通過(guò)委托來(lái)實(shí)現(xiàn).

  要注意的是Objective-c只支持單繼承,如果要實(shí)現(xiàn)多繼承的話(huà),可以通過(guò)類(lèi)別和協(xié)議的方式來(lái)實(shí)現(xiàn)。

  8.obj-c有私有方法么?私有變量呢

  objective-c – 類(lèi)里面的方法只有兩種, 靜態(tài)方法和實(shí)例方法. 這似乎就不是完整的面向?qū)ο罅?按照OO的原則就是一個(gè)對(duì)象只暴露有用的東西. 如果沒(méi)有了私有方法的話(huà), 對(duì)于一些小范圍的代碼重用就不那么順手了. 在類(lèi)里面聲名一個(gè)私有方法

  @interface Controller : NSObject { NSString *something; }

  + (void)thisIsAStaticMethod;

  - (void)thisIsAnInstanceMethod;

  @end

  @interface Controller (private) -

  (void)thisIsAPrivateMethod;

  @end

  @private可以用來(lái)修飾私有變量

  在Objective?C中,所有實(shí)例變量默認(rèn)都是私有的,所有實(shí)例方法默認(rèn)都是公有的

  9.關(guān)鍵字c*t有什么含意?修飾類(lèi)呢?static的作用,用于類(lèi)呢?還有extern c的作用

  c*t意味著”只讀”,下面的聲明都是什么意思?

  c*t int a;

  int c*t a;

  c*t int *a;

  int * c*t a;

  int c*t * a c*t;

  前 兩個(gè)的作用是一樣,a是一個(gè)常整型數(shù)。第三個(gè)意味著a是一個(gè)指向常整型數(shù)的指針(也就是,整型數(shù)是不可修改的,但指針可以)。第四個(gè)意思a是一個(gè)指向整型 數(shù)的常指針(也就是說(shuō),指針指向的整型數(shù)是可以修改的,但指針是不可修改的)。最后一個(gè)意味著a是一個(gè)指向常整型數(shù)的常指針(也就是說(shuō),指針指向的整型數(shù) 是不可修改的,同時(shí)指針也是不可修改的)。

  結(jié)論:

  •; 關(guān)鍵字c*t的作用是為給讀你代碼的人傳達(dá)非常有用的信息,實(shí)際上,聲明一個(gè)參數(shù)為常量是為了告訴了用戶(hù)這個(gè)參數(shù)的應(yīng)用目的。如果

  你曾花很多時(shí)間清理其它人留下的垃圾,你就會(huì)很快學(xué)會(huì)感謝這點(diǎn)多余的信息。(當(dāng)然,懂得用c*t的程序員很少會(huì)留下的垃圾讓別人來(lái)清

  理的。)

  •; 通過(guò)給優(yōu)化器一些附加的信息,使用關(guān)鍵字c*t也許能產(chǎn)生更緊湊的代碼。

  •; 合理地使用關(guān)鍵字c*t可以使編譯器很自然地保護(hù)那些不希望被改變的參數(shù),防止其被無(wú)意的代碼修改。簡(jiǎn)而言之,這樣可以減少bug的出現(xiàn)。

  (1)欲阻止一個(gè)變量被改變,可以使用 c*t 關(guān)鍵字。在定義該 c*t 變量時(shí),通常需要對(duì)它進(jìn)行初

  始化,因?yàn)橐院缶蜎](méi)有機(jī)會(huì)再去改變它了;

  (2)對(duì)指針來(lái)說(shuō),可以指定指針本身為 c*t,也可以指定指針?biāo)傅臄?shù)據(jù)為 c*t,或二者同時(shí)指

  定為 c*t;

  (3)在一個(gè)函數(shù)聲明中,c*t 可以修飾形參,表明它是一個(gè)輸入?yún)?shù),在函數(shù)內(nèi)部不能改變其值;

  (4)對(duì)于類(lèi)的成員函數(shù),若指定其為 c*t 類(lèi)型,則表明其是一個(gè)常函數(shù),不能修改類(lèi)的成員變量;

  (5)對(duì)于類(lèi)的成員函數(shù),有時(shí)候必須指定其返回值為 c*t 類(lèi)型,以使得其返回值不為“左值”。

  關(guān)鍵字volatile有什么含意?并給出三個(gè)不同的例子。

  一個(gè)定義為volatile的變量是說(shuō)這變量可能會(huì)被意想不到地改變,這樣,編譯器就不會(huì)去假設(shè)這個(gè)變量的值了。精確地說(shuō)就是,優(yōu)化器在用到

  這個(gè)變量時(shí)必須每次都小心地重新讀取這個(gè)變量的值,而不是使用保存在寄存器里的備份。下面是volatile變量的幾個(gè)例子:

  •; 并行設(shè)備的硬件寄存器(如:狀態(tài)寄存器)

  •; 一個(gè)中斷服務(wù)子程序中會(huì)訪(fǎng)問(wèn)到的非自動(dòng)變量(Non-automatic variables)

  •; 多線(xiàn)程應(yīng)用中被幾個(gè)任務(wù)共享的變量

  •; 一個(gè)參數(shù)既可以是c*t還可以是volatile嗎?解釋為什么。

  •; 一個(gè)指針可以是volatile 嗎?解釋為什么。

下面是答案:

  • 相關(guān)文章
  • 創(chuàng)聯(lián)軟件熱門(mén)筆試題和面試題答案創(chuàng)聯(lián)軟件熱門(mén)筆試題和面試題答案

    如下分享的在筆試題,都是創(chuàng)聯(lián)軟件用來(lái)考求職者的熱門(mén)內(nèi)容,你了解了嗎? 1.SQLServer..DB2..oracle請(qǐng)選一樣回答下面的問(wèn)題. 1.1什么是游標(biāo)?大概說(shuō)下它..

  • PHP軟件工程師的筆試題和面試題答案PHP軟件工程師的筆試題和面試題答案

    作為計(jì)算機(jī)專(zhuān)業(yè)畢業(yè)生的你,能全部完成如下PHP軟件工程師的筆試題嗎?1.基本知識(shí)點(diǎn) HTTP協(xié)議中幾個(gè)狀態(tài)碼的含義:503500401200301302。。。 Include..

  • Delphi工程師筆試題和面試題答案Delphi工程師筆試題和面試題答案

    如下這些熱門(mén)題目是應(yīng)聘Delphi工程師筆試常考的內(nèi)容,分享給大家收藏: 一、Delphi基礎(chǔ) 1、Delphi內(nèi)置類(lèi)型string和WideString的區(qū)別。 2、簡(jiǎn)..

  • 創(chuàng)聯(lián)軟件熱門(mén)筆試題和面試題答案創(chuàng)聯(lián)軟件熱門(mén)筆試題和面試題答案

    如下分享的在筆試題,都是創(chuàng)聯(lián)軟件用來(lái)考求職者的熱門(mén)內(nèi)容,你了解了嗎? 1.SQLServer..DB2..oracle請(qǐng)選一樣回答下面的問(wèn)題. 1.1什么是游標(biāo)?大概說(shuō)下它..

  • PHP軟件工程師的筆試題和面試題答案PHP軟件工程師的筆試題和面試題答案

    作為計(jì)算機(jī)專(zhuān)業(yè)畢業(yè)生的你,能全部完成如下PHP軟件工程師的筆試題嗎?1.基本知識(shí)點(diǎn) HTTP協(xié)議中幾個(gè)狀態(tài)碼的含義:503500401200301302。。。 Include..

  • Delphi工程師筆試題和面試題答案Delphi工程師筆試題和面試題答案

    如下這些熱門(mén)題目是應(yīng)聘Delphi工程師筆試常考的內(nèi)容,分享給大家收藏: 一、Delphi基礎(chǔ) 1、Delphi內(nèi)置類(lèi)型string和WideString的區(qū)別。 2、簡(jiǎn)..

  • 河北新聞網(wǎng)兩學(xué)一做知識(shí)競(jìng)賽(試題+答案完整版)河北新聞網(wǎng)兩學(xué)一做知識(shí)競(jìng)賽(試題+答案完整版)

    2016河北新聞網(wǎng)兩學(xué)一做知識(shí)競(jìng)賽開(kāi)賽啦,快來(lái)圍觀(guān)吧;顒(dòng)內(nèi)容為推動(dòng)“兩學(xué)一做”學(xué)習(xí)教育深入開(kāi)展,省委宣傳部、省委組織部組織開(kāi)展“兩學(xué)一做”知識(shí)競(jìng)賽活動(dòng),河北..

  • 河北新聞網(wǎng)兩學(xué)一做知識(shí)競(jìng)賽活動(dòng)試題答案河北新聞網(wǎng)兩學(xué)一做知識(shí)競(jìng)賽活動(dòng)試題答案

    2016年河北新聞網(wǎng)兩學(xué)一做知識(shí)競(jìng)賽活動(dòng)試題答案為推動(dòng)“兩學(xué)一做”學(xué)習(xí)教育深入開(kāi)展,省委宣傳部、省委組織部組織開(kāi)展“兩學(xué)一做”大型知識(shí)競(jìng)賽。此項(xiàng)活動(dòng)由河北新聞..

  • 兩學(xué)一做學(xué)習(xí)教育知識(shí)競(jìng)賽活動(dòng)10篇兩學(xué)一做學(xué)習(xí)教育知識(shí)競(jìng)賽活動(dòng)10篇

    為隆重紀(jì)念中國(guó)共產(chǎn)黨建黨95周年,推進(jìn)我市“兩學(xué)一做”學(xué)習(xí)教育深入開(kāi)展,推動(dòng)廣大黨員干部認(rèn)真學(xué)好黨章黨規(guī)和*系列重要講話(huà),現(xiàn)將“兩學(xué)一做”學(xué)習(xí)教育知識(shí)競(jìng)賽題予..

  • 開(kāi)展兩學(xué)一做學(xué)習(xí)教育知識(shí)競(jìng)賽活動(dòng)真題答案開(kāi)展兩學(xué)一做學(xué)習(xí)教育知識(shí)競(jìng)賽活動(dòng)真題答案

    144.根據(jù)《中國(guó)共產(chǎn)黨紀(jì)律處分條例》規(guī)定,黨的各級(jí)代表大會(huì)的代表受到(D)處分的,黨組織應(yīng)當(dāng)終止其代表資格。A.警告(含)以上B.嚴(yán)重警告(含)以上C.撤銷(xiāo)黨內(nèi)職務(wù)(含)以..