現(xiàn)在iOS從業(yè)和待從業(yè)人員很多,導(dǎo)致企業(yè)的招聘要求有所提高,招聘更加地理性化,多方面考核應(yīng)聘人員是否達(dá)標(biāo),技術(shù)能力,項目經(jīng)驗,學(xué)習(xí)能力等等。在最好的行情有倒閉的公司,在最壞的情況下也有盈利的公司。不管什么情況下,過硬的技術(shù)是根本,找工作不是問題,提高自己的核心競爭力。IT行業(yè)高級工程師一直都是剛需。
成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供鹽城網(wǎng)站建設(shè)、鹽城做網(wǎng)站、鹽城網(wǎng)站設(shè)計、鹽城網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、鹽城企業(yè)網(wǎng)站模板建站服務(wù),10余年鹽城做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
兩個方向:
1、學(xué)習(xí)其他技術(shù),目前企業(yè)需求大的是HTML5、PHP等技術(shù)。
2、深入學(xué)習(xí),提高技術(shù)水平和核心競爭力。
您好,做開發(fā)挺不錯的,尤其是近年來比較熱門的IOS開發(fā)就業(yè)前景很不錯的。
雖然swift很受歡迎,不過現(xiàn)在大部分還是OC主流.因為新語言可能出了很多坑,而很多人都沒普遍遇到,造成解決問題相對麻煩.
據(jù)我所知,渣浪都還沒轉(zhuǎn)swift.
黑蘋果是可以開發(fā)的.有個實習(xí)生,之前用swift,因為項目要求,我還是讓他先去弄oc了,雖然有時候總是氣到我.
沒事,你學(xué)swift也行的,轉(zhuǎn)OC也快(畢竟只是寫法不同,一眼看過去時).如果你真的習(xí)慣swift的語法跟寫法,可以先搞搞swift.公司另外一個人也做了一年swift開發(fā).
總的來說,新手適合swift,而我們 = - = 沒辦法 得都會
今年移動開發(fā)的工作不怎么好找,尤其是實習(xí)生的工作。大概是這兩年移動開發(fā)比較火爆,很多人都進(jìn)入這一行的原因吧。
百度iOS實習(xí)生問題和答案如下:
1. Object-c的類可以多重繼承么?可以實現(xiàn)多個接口么?Category是什么?重寫一個類的方式用繼承好還是分類好?為什么?
答: Object-c的類不可以多重繼承;可以實現(xiàn)多個接口,通過實現(xiàn)多個接口可以完成C++的多重繼承;Category是類別,一般情況用分類好,用Category去重寫類的方法,僅對本Category有效,不會影響到其他類與原有類的關(guān)系。
2. #import 跟#include 又什么區(qū)別,@class呢, #import 跟 #import””又什么區(qū)別?
答:#import是Objective-C導(dǎo)入頭文件的關(guān)鍵字,#include是C/C++導(dǎo)入頭文件的關(guān)鍵字,使用#import頭文件會自動只導(dǎo)入一次,不會重復(fù)導(dǎo)入,相當(dāng)于#include和#pragma once;@class告訴編譯器某個類的聲明,當(dāng)執(zhí)行時,才去查看類的實現(xiàn)文件,可以解決頭文件的相互包含;#import用來包含系統(tǒng)的頭文件,#import””用來包含用戶頭文件。
3. 屬性readwrite,readonly,assign,retain,copy,nonatomic 各是什么作用,在那種情況下用?
1. readwrite 是可讀可寫特性;需要生成getter方法和setter方法時
2. readonly 是只讀特性 只會生成getter方法 不會生成setter方法 ;不希望屬性在類外改變
3. assign 是賦值特性,setter方法將傳入?yún)?shù)賦值給實例變量;僅設(shè)置變量時;
4. retain 表示持有特性,setter方法將傳入?yún)?shù)先保留,再賦值,傳入?yún)?shù)的retaincount會+1;
5. copy 表示賦值特性,setter方法將傳入對象復(fù)制一份;需要完全一份新的變量時。
6. nonatomic 非原子操作,決定編譯器生成的setter getter是否是原子操作,atomic表示多線程安全,一般使用nonatomic
4.寫一個setter方法用于完成@property (nonatomic,retain)NSString *name,寫一個setter方法用于完成@property(nonatomic,copy)NSString *name
- (void) setName:(NSString*) str
{
[str retain];
[name release];
name = str;
}
- (void)setName:(NSString *)str
{
id t = [str copy];
[name release];
name = t;
}
5.對于語句NSString*obj = [[NSData alloc] init]; obj在編譯時和運行時分別時什么類型的對象?
編譯時是NSString的類型;運行時是NSData類型的對象
6.常見的object-c的數(shù)據(jù)類型有那些, 和C的基本數(shù)據(jù)類型有什么區(qū)別?如:NSInteger和int
object-c的數(shù)據(jù)類型有NSString,NSNumber,NSArray,NSMutableArray,NSData等等,這些都是class,創(chuàng)建后便是對象,而C語言的基本數(shù)據(jù)類型int,只是一定字節(jié)的內(nèi)存空間,用于存放數(shù)值;NSInteger是基本數(shù)據(jù)類型,并不是NSNumber的子類,當(dāng)然也不是NSObject的子類。NSInteger是基本數(shù)據(jù)類型Int或者Long的別名(NSInteger的定義typedef long NSInteger),它的區(qū)別在于,NSInteger會根據(jù)系統(tǒng)是32位還是64位來決定是本身是int還是Long。
7.id 聲明的對象有什么特性?
Id 聲明的對象具有運行時的特性,即可以指向任意類型的objcetive-c的對象;
8.Objective-C如何對內(nèi)存管理的,說說你的看法和解決方法?
Objective-C的內(nèi)存管理主要有三種方式ARC(自動內(nèi)存計數(shù))、手動內(nèi)存計數(shù)、內(nèi)存池。
1. (Garbage Collection)自動內(nèi)存計數(shù):這種方式和java類似,在你的程序的執(zhí)行過程中。始終有一個高人在背后準(zhǔn)確地幫你收拾垃圾,你不用考慮它什么時候開始工作,怎樣工作。你只需要明白,我申請了一段內(nèi)存空間,當(dāng)我不再使用從而這段內(nèi)存成為垃圾的時候,我就徹底的把它忘記掉,反正那個高人會幫我收拾垃圾。遺憾的是,那個高人需要消耗一定的資源,在攜帶設(shè)備里面,資源是緊俏商品所以iPhone不支持這個功能。所以“Garbage Collection”不是本入門指南的范圍,對“Garbage Collection”內(nèi)部機制感興趣的同學(xué)可以參考一些其他的資料,不過說老實話“Garbage Collection”不大適合適初學(xué)者研究。
解決: 通過alloc – initial方式創(chuàng)建的, 創(chuàng)建后引用計數(shù)+1, 此后每retain一次引用計數(shù)+1, 那么在程序中做相應(yīng)次數(shù)的release就好了.
2. (Reference Counted)手動內(nèi)存計數(shù):就是說,從一段內(nèi)存被申請之后,就存在一個變量用于保存這段內(nèi)存被使用的次數(shù),我們暫時把它稱為計數(shù)器,當(dāng)計數(shù)器變?yōu)?的時候,那么就是釋放這段內(nèi)存的時候。比如說,當(dāng)在程序A里面一段內(nèi)存被成功申請完成之后,那么這個計數(shù)器就從0變成1(我們把這個過程叫做alloc),然后程序B也需要使用這個內(nèi)存,那么計數(shù)器就從1變成了2(我們把這個過程叫做retain)。緊接著程序A不再需要這段內(nèi)存了,那么程序A就把這個計數(shù)器減1(我們把這個過程叫做release);程序B也不再需要這段內(nèi)存的時候,那么也把計數(shù)器減1(這個過程還是release)。當(dāng)系統(tǒng)(也就是Foundation)發(fā)現(xiàn)這個計數(shù)器變成了0,那么就會調(diào)用內(nèi)存回收程序把這段內(nèi)存回收(我們把這個過程叫做dealloc)。順便提一句,如果沒有Foundation,那么維護(hù)計數(shù)器,釋放內(nèi)存等等工作需要你手工來完成。
解決:一般是由類的靜態(tài)方法創(chuàng)建的, 函數(shù)名中不會出現(xiàn)alloc或init字樣, 如[NSString string]和[NSArray arrayWithObject:], 創(chuàng)建后引用計數(shù)+0, 在函數(shù)出棧后釋放, 即相當(dāng)于一個棧上的局部變量. 當(dāng)然也可以通過retain延長對象的生存期.
3. (NSAutoRealeasePool)內(nèi)存池:可以通過創(chuàng)建和釋放內(nèi)存池控制內(nèi)存申請和回收的時機.
解決:是由autorelease加入系統(tǒng)內(nèi)存池, 內(nèi)存池是可以嵌套的, 每個內(nèi)存池都需要有一個創(chuàng)建釋放對, 就像main函數(shù)中寫的一樣. 使用也很簡單, 比如[[[NSString alloc]initialWithFormat:@”Hey you!”] autorelease], 即將一個NSString對象加入到最內(nèi)層的系統(tǒng)內(nèi)存池, 當(dāng)我們釋放這個內(nèi)存池時, 其中的對象都會被釋放.
9. 原子(atomic)跟非原子(non-atomic)屬性有什么區(qū)別?
1. atomic提供多線程安全。是防止在寫未完成的時候被另外一個線程讀取,造成數(shù)據(jù)錯誤
2. non-atomic:在自己管理內(nèi)存的環(huán)境中,解析的訪問器保留并自動釋放返回的值,如果指定了 nonatomic ,那么訪問器只是簡單地返回這個值。
10. 看下面的程序,第一個NSLog會輸出什么?這時str的retainCount是多少?第二個和第三個呢? 為什么?
=======================================================
NSMutableArray* ary = [[NSMutableArray array] retain];
NSString *str = [NSString stringWithFormat:@"test"];
[str retain];
[ary addObject: str];
NSLog(@”%@%d”,str,[str retainCount]);
[str retain];
[str release];
[str release];
NSLog(@”%@%d”,str,[str retainCount]);
[ary removeAllObjects];
NSLog(@”%@%d”,str,[str retainCount]);
=======================================================
str的retainCount創(chuàng)建+1,retain+1,加入數(shù)組自動+1 3
retain+1,release-1,release-1 2
數(shù)組刪除所有對象,所有數(shù)組內(nèi)的對象自動-1 1
11. 內(nèi)存管理的幾條原則時什么?按照默認(rèn)法則.那些關(guān)鍵字生成的對象
需要手動釋放?在和property結(jié)合的時候怎樣有效的避免內(nèi)存泄露?
誰申請,誰釋放
遵循Cocoa Touch的使用原則;
內(nèi)存管理主要要避免“過早釋放”和“內(nèi)存泄漏”,對于“過早釋放”需要注意@property設(shè)置特性時,一定要用對特性關(guān)鍵字,對于“內(nèi)存泄漏”,一定要申請了要負(fù)責(zé)釋放,要細(xì)心。
關(guān)鍵字alloc 或new 生成的對象需要手動釋放;
設(shè)置正確的property屬性,對于retain需要在合適的地方釋放,
12.如何對iOS設(shè)備進(jìn)行性能測試?
Profile- Instruments -Time Profiler
13. Object C中創(chuàng)建線程的方法是什么?如果在主線程中執(zhí)行代碼,方法是什么?如果想延時執(zhí)行代碼、方法又是什么?
線程創(chuàng)建有三種方法:使用NSThread創(chuàng)建、使用GCD的dispatch、使用子類化的NSOperation,然后將其加入NSOperationQueue;在主線程執(zhí)行代碼,方法是performSelectorOnMainThread,如果想延時執(zhí)行代碼可以用performSelector:onThread:withObject:waitUntilDone:
14.描述一下iOS SDK中如何實現(xiàn)MVC的開發(fā)模式
MVC是模型、試圖、控制開發(fā)模式,對于iOS SDK,所有的View都是視圖層的,它應(yīng)該獨立于模型層,由視圖控制層來控制。所有的用戶數(shù)據(jù)都是模型層,它應(yīng)該獨立于視圖。所有的ViewController都是控制層,由它負(fù)責(zé)控制視圖,訪問模型數(shù)據(jù)。
15 淺復(fù)制和深復(fù)制的區(qū)別?
答案:淺層復(fù)制:只復(fù)制指向?qū)ο蟮闹羔槪粡?fù)制引用對象本身。
深層復(fù)制:復(fù)制引用對象本身。
意思就是說我有個A對象,復(fù)制一份后得到A_copy對象后,對于淺復(fù)制來說,A和A_copy指向的是同一個內(nèi)存資源,復(fù)制的只不過是是一個指針,對象本身資源
還是只有一份,那如果我們對A_copy執(zhí)行了修改操作,那么發(fā)現(xiàn)A引用的對象同樣被修改,這其實違背了我們復(fù)制拷貝的一個思想。深復(fù)制就好理解了,內(nèi)存中存在了
兩份獨立對象本身。
用網(wǎng)上一哥們通俗的話將就是:
淺復(fù)制好比你和你的影子,你完蛋,你的影子也完蛋
深復(fù)制好比你和你的克隆人,你完蛋,你的克隆人還活著。
16. 類別的作用?繼承和類別在實現(xiàn)中有何區(qū)別?
答案:category 可以在不獲悉,不改變原來代碼的情況下往里面添加新的方法,只能添加,不能刪除修改。
并且如果類別和原來類中的方法產(chǎn)生名稱沖突,則類別將覆蓋原來的方法,因為類別具有更高的優(yōu)先級。
類別主要有3個作用:
(1)將類的實現(xiàn)分散到多個不同文件或多個不同框架中。
(2)創(chuàng)建對私有方法的前向引用。
(3)向?qū)ο筇砑臃钦絽f(xié)議。
繼承可以增加,修改或者刪除方法,并且可以增加屬性。
文章題目:ios開發(fā)實習(xí)生,iOS實訓(xùn)報告
URL分享:http://chinadenli.net/article4/dsdseie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、網(wǎng)站內(nèi)鏈、網(wǎng)站策劃、微信公眾號、網(wǎng)站設(shè)計、
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)