可能碰到的iOS筆試面試題(4)--C語言

C語言,開發(fā)的基礎(chǔ)功底磁奖,iOS很多高級應(yīng)用都要和C語言打交道囊拜,所以,C語言在iOS開發(fā)中的重要性比搭,你懂的艾疟。里面的一些問題可能并不是C語言問題,但是屬于計(jì)算機(jī)的一些原理性的知識點(diǎn),所以我就不再另外寫一篇文章了蔽莱,直接寫在這里弟疆。

當(dāng)你寫下面的代碼時(shí)會發(fā)生什么事?

  • least = MIN(*p++, b);
  • 結(jié)果是:((p++) <= (b) ? (p++) : (*p++)) 這個(gè)表達(dá)式會產(chǎn)生副作用盗冷,指針p會作三次++自增操作怠苔。

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

define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL(UL無符號長整形)

寫一個(gè)"標(biāo)準(zhǔn)"宏MIN 仪糖,這個(gè)宏輸入兩個(gè)參數(shù)并返回較小的一個(gè)柑司。

define MIN(A,B) ((A) <= (B) ? (A) : (B))

寫一個(gè)標(biāo)準(zhǔn)宏Max,并給出以下代碼的輸出

int array[5] = {1, 2, 3, 4, 5};
int *p = &array[0];
int max = Max(*p++, 1);
printf("%d %d", max, *p);
參考答案: 1锅劝,2
#define Max(X, Y) ((X) > (Y) ? (X) : (Y))
當(dāng)看到宏時(shí)攒驰,就會想到宏定義所帶來的副作用。對于++故爵、–玻粪,在宏當(dāng)中使用是最容易產(chǎn)生副作用的,因此要慎用诬垂。
分析:
p指針指向了數(shù)組array的首地址劲室,也就是第一個(gè)元素對應(yīng)的地址,其值為1.
宏定義時(shí)一定要注意每個(gè)地方要加上圓括號
*p++相當(dāng)于*p, p++,所以Max(*p++, 1)相當(dāng)于:
(*p++) > (1) ? (*p++) : (1)
=>
(1) > (1) ? (*p++) : (1)
=>
第一個(gè)*p++的結(jié)果是结窘,p所指向的值變成了2很洋,但是1 > 1為値,所以最終max的值就是1隧枫。而后面的(*p++)也就不會執(zhí)行喉磁,因此p所指向的地址對應(yīng)的值就是2,而不是3.
擴(kuò)展:如果上面的*p++改成*(++p)如何官脓?
(*++p) > (1) ? (*++p) : (1)
=>
(2) > (1) ? (*++p) : (1)
=> 
max = *++p;
=> 
*p = 3协怒,max = 3;
 

define定義的宏和const定義的常量有什么區(qū)別?

λ   #define定義宏的指令确买,程序在預(yù)處理階段將用#define所定義的內(nèi)容只是進(jìn)行了替換斤讥。因此程序運(yùn)行時(shí),常量表中并沒有用#define所定義的宏湾趾,系統(tǒng)并不為它分配內(nèi)存芭商,而且在編譯時(shí)不會檢查數(shù)據(jù)類型,出錯(cuò)的概率要大一些搀缠。
λ   const定義的常量铛楣,在程序運(yùn)行時(shí)是存放在常量表中,系統(tǒng)會為它分配內(nèi)存艺普,而且在編譯時(shí)會進(jìn)行類型檢查簸州。
#define定義表達(dá)式時(shí)要注意“邊緣效應(yīng)”鉴竭,例如如下定義:
#define N 2 + 3 // 我們預(yù)想的N值是5,我們這樣使用N
int a = N / 2;  // 我們預(yù)想的a的值是2.5岸浑,可實(shí)際上a的值是3.5

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

  • 優(yōu)化器在用到這個(gè)變量時(shí)必須每次都小心地重新讀取這個(gè)變量的值搏存,而不是使用保存在寄存器里的備份。下面是volatile變量的幾個(gè)例子:
  • 并行設(shè)備的硬件寄存器(如:狀態(tài)寄存器)
  • 一個(gè)中斷服務(wù)子程序中會訪問到的非自動(dòng)變量(Non-automatic variables)
  • 多線程應(yīng)用中被幾個(gè)任務(wù)共享的變量

完成字符串拷貝可以使用sprintf矢洲、strcpy璧眠、以及memcpy函數(shù),請問這些函數(shù)有什么區(qū)別?你喜歡哪一個(gè)读虏?為什么责静?

這些函數(shù)的區(qū)別在于實(shí)現(xiàn)功能以及操作對象不同。
- strcpy:函數(shù)操作的對象是字符串盖桥,完成從源字符串到目的字符串的拷貝功能灾螃。
- sprintf:這個(gè)函數(shù)主要用來實(shí)現(xiàn)(字符串或基本數(shù)據(jù)類型)向字符串的轉(zhuǎn)換功能。如果源對象是字符串揩徊,并且指定%s格式符腰鬼,也可實(shí)現(xiàn)字符串拷貝功能。
- memcpy:函數(shù)顧名思義就是內(nèi)存拷貝靴拱,實(shí)現(xiàn)將一個(gè)內(nèi)存塊的內(nèi)容復(fù)制到另一個(gè)內(nèi)存塊這一功能垃喊。內(nèi)存塊由其首地址以及長度確定猾普。因此袜炕,memcpy 的操作對象適用于任意數(shù)據(jù)類型,只要能給出對象的起始地址和內(nèi)存長度信息初家、并且對象具有可操作性即可偎窘。鑒于memcpy函數(shù)等長拷貝的特點(diǎn)以及數(shù)據(jù)類型代表的物理意義,memcpy函數(shù)通常限于同種類型數(shù)據(jù)或?qū)ο笾g的拷貝溜在,其中當(dāng)然也包括字符串拷貝以及基本數(shù)據(jù)類型的拷貝陌知。
- 對于字符串拷貝來說,用上述三個(gè)函數(shù)都可以實(shí)現(xiàn)掖肋,但是其實(shí)現(xiàn)的效率和使用的方便程度不同:
- strcpy 無疑是最合適的選擇:效率高且調(diào)用方便仆葡。
- snprintf 要額外指定格式符并且進(jìn)行格式轉(zhuǎn)化,麻煩且效率不高志笼。
- memcpy 雖然高效沿盅,但是需要額外提供拷貝的內(nèi)存長度這一參數(shù),易錯(cuò)且使用不便纫溃;并且如果長度指定過大的話(最優(yōu)長度是源字符串長度 + 1)腰涧,還會帶來性能的下降。其實(shí) strcpy 函數(shù)一般是在內(nèi)部調(diào)用 memcpy函數(shù)或者用匯編直接實(shí)現(xiàn)的紊浩,以達(dá)到高效的目的窖铡。因此疗锐,使用 memcpy 和 strcpy 拷貝字符串在性能上應(yīng)該沒有什么大的差別。
- 對于非字符串類型的數(shù)據(jù)的復(fù)制來說费彼,strcpy和snprintf一般就無能為力了滑臊,可是對memcpy卻沒有什么影響。但是箍铲,對于基本數(shù)據(jù)類型來說简珠,盡管可以用 memcpy 進(jìn)行拷貝,由于有賦值運(yùn)算符可以方便且高效地進(jìn)行同種或兼容類型的數(shù)據(jù)之間的拷貝虹钮,所以這種情況下memcpy幾乎不被使用聋庵。memcpy的長處是用來實(shí)現(xiàn)(通常是內(nèi)部實(shí)現(xiàn)居多)對結(jié)構(gòu)或者數(shù)組的拷貝,其目的是或者高效芙粱,或者使用方便祭玉,甚或兩者兼有。

sprintf,strcpy,memcpy使用上有什么要注意的地方

  • strcpy是一個(gè)字符串拷貝的函數(shù)春畔,它的函數(shù)原型為strcpy(char *dst, const char *src);

  • 將src開始的一段字符串拷貝到dst開始的內(nèi)存中去脱货,結(jié)束的標(biāo)志符號為 '\0',由于拷貝的長度不是由我們自己控制的律姨,所以這個(gè)字符串拷貝很容易出錯(cuò)振峻。

  • 具備字符串拷貝功能的函數(shù)有memcpy,這是一個(gè)內(nèi)存拷貝函數(shù)择份,它的函數(shù)原型為memcpy(char dst, const char src, unsigned int len);將長度為len的一段內(nèi)存扣孟,從src拷貝到dst中去,這個(gè)函數(shù)的長度可控荣赶。但是會有內(nèi)存讀寫錯(cuò)誤凤价。(比如len的長度大于要拷貝的空間或目的空間)

  • sprintf是格式化函數(shù)。將一段數(shù)據(jù)通過特定的格式拔创,格式化到一個(gè)字符串緩沖區(qū)中去利诺。sprintf格式化的函數(shù)的長度不可控,有可能格式化后的字符串會超出緩沖區(qū)的大小剩燥,造成溢出慢逾。

static關(guān)鍵字的作用

  • 隱藏。編譯多個(gè)文件時(shí)灭红,所有未加static前綴的全局變量和函數(shù)都全局可見侣滩。
  • 保持變量內(nèi)容的持久。全局變量和static變量都存儲在靜態(tài)存儲區(qū)比伏,程序開始運(yùn)行就初始化胜卤,只初始化一次。static控制了變量的作用范圍赁项。
  • 默認(rèn)初始化為0.在靜態(tài)數(shù)據(jù)區(qū)葛躏,內(nèi)存中的所有字節(jié)都是0x00澈段,全局變量和static變量都是默認(rèn)初始化為0.

static關(guān)鍵字區(qū)別:

  • static全局變量與普通的全局變量有什么區(qū)別:static全局變量只初使化一次,防止在其他文件單元中被引用;
  • static局部變量和普通局部變量有什么區(qū)別:static局部變量只被初始化一次舰攒,下一次依據(jù)上一次結(jié)果值败富;
  • static函數(shù)與普通函數(shù)有什么區(qū)別:static函數(shù)在內(nèi)存中只有一份,普通函數(shù)在每個(gè)被調(diào)用中維持一份拷貝

關(guān)鍵字const

  • const int a;int const a; 作用是一樣:a 是一個(gè)常整型數(shù)
  • const int *a;int const *a; a 是一個(gè)指向常整型數(shù)的指針(整型數(shù)是不可修改的摩窃,但指針可以)
  • int * const a;a 是一個(gè)指向整型數(shù)的常指針(指針指向的整型數(shù)是可以修改的兽叮,但指針是不可修改的)
  • int const * const a;a 是一個(gè)指向常整型數(shù)的常指針(指針指向的整型數(shù)是不可修改的,同時(shí)指針也是不可修改的)

堆棧

  • 管理方式:對于棧來講猾愿,是由編譯器自動(dòng)管理鹦聪,無需我們手工控制;對于堆來說蒂秘,釋放工作由程序員控制泽本,容易產(chǎn)生內(nèi)存泄露 (memory leak)。

  • 申請大幸錾:

    • 棧:在Windows下,棧是向低地址擴(kuò)展的數(shù)據(jù)結(jié)構(gòu)规丽,是一塊連續(xù)的內(nèi)存的區(qū)域。這句話的意思是棧頂?shù)牡刂泛蜅5淖畲笕萘渴窍到y(tǒng)預(yù)先規(guī)定好的撇贺,在Windows下赌莺,棧的大小是2M(也有的說是1M,總之是一個(gè)編譯時(shí)就確定的常數(shù))松嘶,如果申請的空間超過棧的剩余空間時(shí)艘狭,將提示 overflow。因此喘蟆,能從棧獲得的空間較小缓升。

    • 堆:堆是向高地址擴(kuò)展的數(shù)據(jù)結(jié)構(gòu)鼓鲁,是不連續(xù)的內(nèi)存區(qū)域蕴轨。這是由于系統(tǒng)是用鏈表來存儲的空閑內(nèi)存地址的,自然是不連續(xù)的骇吭,而鏈表的遍歷方向是由低地址向高地址橙弱。堆的大小受限于計(jì)算機(jī)系統(tǒng)中有效的虛擬內(nèi)存。由此可見燥狰,堆獲得的空間比較靈活棘脐,也比較大。

  • 碎片問題:
    對于堆來講龙致,頻繁的new/delete勢必會造成內(nèi)存空間的不連續(xù)蛀缝,從而造成大量的碎片,使程序效率降低目代。對于棧來講屈梁,則不會存在這個(gè) 問題嗤练,因?yàn)闂J窍冗M(jìn)后出的隊(duì)列,他們是如此的一一對應(yīng)在讶,以至于永遠(yuǎn)都不可能有一個(gè)內(nèi)存塊從棧中間彈出

  • 分配方式:
    堆都是動(dòng)態(tài)分配的煞抬,沒有靜態(tài)分配的堆。棧有2種分配方式:靜態(tài)分配和動(dòng)態(tài)分配构哺。靜態(tài)分配是編譯器完成的革答,比如局部變量的分配。動(dòng)態(tài)分配由 alloc函數(shù)進(jìn)行分配曙强,但是棧的動(dòng)態(tài)分配和堆是不同的残拐,他的動(dòng)態(tài)分配是由編譯器進(jìn)行釋放,無需我們手工實(shí)現(xiàn)碟嘴。

  • 分配效率:
    棧是機(jī)器系統(tǒng)提供的數(shù)據(jù)結(jié)構(gòu)蹦骑,計(jì)算機(jī)會在底層對棧提供支持:分配專門的寄存器存放棧的地址,壓棧出棧都有專門的指令執(zhí)行臀防,這就決定了棧的 效率比較高眠菇。堆則是C/C++函數(shù)庫提供的,它的機(jī)制是很復(fù)雜的

數(shù)組和指針的區(qū)別

  • 數(shù)組可以申請?jiān)跅^(qū)和數(shù)據(jù)區(qū)袱衷;指針可以指向任意類型的內(nèi)存塊
    sizeof作用于數(shù)組時(shí)捎废,得到的是數(shù)組所占的內(nèi)存大小致燥;作用于指針時(shí)登疗,得到的都是4個(gè)字節(jié)的大小
  • 數(shù)組名表示數(shù)組首地址,是常量指針嫌蚤,不可修改指向辐益。比如不可以將++作用于數(shù)組名上;普通指針的值可以改變脱吱,比如可將++作用于指針上
  • 用字符串初始化字符數(shù)組是將字符串的內(nèi)容拷貝到字符數(shù)組中智政;用字符串初始化字符指針是將字符串的首地址賦給指針,也就是指針指向了該字符串

引用和指針的區(qū)別

  • 指針指向一塊內(nèi)存箱蝠,內(nèi)容存儲所指內(nèi)存的地址续捂。

  • 引用是某塊內(nèi)存的別名。

  • 引用使用時(shí)不需要解引用(*)而指針需要

  • 引用只在定義時(shí)被初始化宦搬,之后不可變牙瓢,指針可變。

  • 引用沒有const

  • 引用不能為空

  • sizeof引用得到的是所指向變量(對象)的大小间校,sizeof指針是指針本身的大小矾克。

  • 指針和引用的自增(++)運(yùn)算意義不一樣:引用++為引用對象自己++,指針++是指向?qū)ο蠛竺娴膬?nèi)存

  • 程序需要為指針分配內(nèi)存區(qū)域憔足,引用不需要胁附。

用變量a給出下面的定義

  • 一個(gè)整型數(shù)(An integer)

  • 一個(gè)指向整型數(shù)的指針( A pointer to an integer)

  • 一個(gè)指向指針的的指針差购,它指向的指針是指向一個(gè)整型數(shù)( A pointer to a pointer to an intege)r

  • 一個(gè)有10個(gè)整型數(shù)的數(shù)組( An array of 10 integers)

  • 一個(gè)有10個(gè)指針的數(shù)組,該指針是指向一個(gè)整型數(shù)的汉嗽。(An array of 10 pointers to integers)

  • 一個(gè)指向有10個(gè)整型數(shù)數(shù)組的指針( A pointer to an array of 10 integers)

  • 一個(gè)指向函數(shù)的指針欲逃,該函數(shù)有一個(gè)整型參數(shù)并返回一個(gè)整型數(shù)(A pointer to a function that takes an integer as an argument
    and returns an integer)

  • 一個(gè)有10個(gè)指針的數(shù)組,該指針指向一個(gè)函數(shù)饼暑,該函數(shù)有一個(gè)整型參數(shù)并返回一個(gè)整型數(shù)( An array of ten pointers to functions t
    hat take an integer argument and return an integer )

  • 答案是:

  • int a; // An integer

  • int *a; // A pointer to an integer

  • int **a; // A pointer to a pointer to an integer

  • int a[10]; // An array of 10 integers

  • int *a[10]; // An array of 10 pointers to integers

  • int (*a)[10]; // A pointer to an array of 10 integers

  • int (*a)(int); // A pointer to a function a that takes an integer argument and returns an integer

  • int (*a[10])(int); // An array of 10 pointers to functions that take an integer argument and return an integer

請寫出以下代碼輸出

int a[5] = {1, 2, 3, 4, 5};
int *ptr = (int *)(&a + 1);
printf("%d, %d", *(a + 1), *(ptr + 1));
參考答案: 2, 隨機(jī)值
這種類型題好像挺常見的稳析。考的就是C語言上的指針的理解和數(shù)組的理解弓叛。
分析:
a代表有5個(gè)元素的數(shù)組的首地址彰居,a[5]的元素分別是1,2撰筷,3陈惰,4,5毕籽。接下來抬闯,a + 1表示數(shù)據(jù)首地址加1,那么就是a[1]关筒,也就是對應(yīng)于值為2.但是溶握,這里是&a + 1,因?yàn)閍代表的是整個(gè)數(shù)組蒸播,它的空間大小為5 * sizeof(int)睡榆,因此&a + 1就是a+5。a是個(gè)常量指針袍榆,指向當(dāng)前數(shù)組的首地址胀屿,指針+1就是移動(dòng)sizeof(int)個(gè)字節(jié)。
因此包雀,ptr是指向int *類型的指針宿崭,而ptr指向的就是a + 5,那么ptr + 1也相當(dāng)于a + 6馏艾,所以最后的*(ptr + 1)就是一個(gè)隨機(jī)值了劳曹。而*(ptr – 1)就相當(dāng)于a + 4,對應(yīng)的值就是5琅摩。

簡述內(nèi)存分區(qū)情況

  • 代碼區(qū):存放函數(shù)二進(jìn)制代碼
  • 數(shù)據(jù)區(qū):系統(tǒng)運(yùn)行時(shí)申請內(nèi)存并初始化,系統(tǒng)退出時(shí)由系統(tǒng)釋放锭硼,存放全局變量房资、靜態(tài)變量、常量
  • 堆區(qū):通過malloc等函數(shù)或new等操作符動(dòng)態(tài)申請得到檀头,需程序員手動(dòng)申請和釋放
  • 棧區(qū):函數(shù)模塊內(nèi)申請轰异,函數(shù)結(jié)束時(shí)由系統(tǒng)自動(dòng)釋放岖沛,存放局部變量、函數(shù)參數(shù)

用NSLog函數(shù)輸出一個(gè)浮點(diǎn)類型搭独,結(jié)果四舍五入婴削,并保留一位小數(shù)

float money = 1.011;
NSLog(@"%.1f", money);

文章如有問題,請留言牙肝,我將及時(shí)更正唉俗。

滿地打滾賣萌求贊,如果本文幫助到你配椭,輕點(diǎn)下方的紅心虫溜,給作者君增加更新的動(dòng)力。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末股缸,一起剝皮案震驚了整個(gè)濱河市衡楞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌敦姻,老刑警劉巖瘾境,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異镰惦,居然都是意外死亡寄雀,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進(jìn)店門陨献,熙熙樓的掌柜王于貴愁眉苦臉地迎上來盒犹,“玉大人,你說我怎么就攤上這事眨业〖卑颍” “怎么了?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵龄捡,是天一觀的道長卓嫂。 經(jīng)常有香客問我,道長聘殖,這世上最難降的妖魔是什么晨雳? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮奸腺,結(jié)果婚禮上餐禁,老公的妹妹穿的比我還像新娘。我一直安慰自己突照,他們只是感情好帮非,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般末盔。 火紅的嫁衣襯著肌膚如雪郭毕。 梳的紋絲不亂的頭發(fā)上痕慢,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天坝疼,我揣著相機(jī)與錄音共耍,去河邊找鬼。 笑死游盲,一個(gè)胖子當(dāng)著我的面吹牛误墓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播背桐,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼优烧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了链峭?” 一聲冷哼從身側(cè)響起畦娄,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎弊仪,沒想到半個(gè)月后熙卡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡励饵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年驳癌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片役听。...
    茶點(diǎn)故事閱讀 38,747評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡颓鲜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出典予,到底是詐尸還是另有隱情甜滨,我是刑警寧澤,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布瘤袖,位于F島的核電站衣摩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏捂敌。R本人自食惡果不足惜艾扮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望占婉。 院中可真熱鬧泡嘴,春花似錦、人聲如沸锐涯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽纹腌。三九已至霎终,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間升薯,已是汗流浹背莱褒。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留涎劈,地道東北人广凸。 一個(gè)月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像蛛枚,于是被迫代替她去往敵國和親谅海。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評論 2 350

推薦閱讀更多精彩內(nèi)容

  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,135評論 30 470
  • 1.寫一個(gè)NSString類的實(shí)現(xiàn) +(id)initWithCString:(c*****t char *)nu...
    韓七夏閱讀 3,754評論 2 37
  • 1.#import和#include的區(qū)別 @class? @class一般用于頭文件中需要聲明該類的某個(gè)實(shí)例變量...
    晚照清舟閱讀 403評論 0 0
  • iOS面試小貼士 ———————————————回答好下面的足夠了------------------------...
    不言不愛閱讀 1,970評論 0 7
  • 活的時(shí)間越長蹦浦,見的越多扭吁,越感覺人生的神奇,特別是“思想”的神奇盲镶,不同的思想造就不同的人生侥袜,不同的道路,所以我認(rèn)為我...
    光狼閱讀 239評論 0 0