面試總結

軟件架構:

按功能有mvc mvvm 蜕青,按照稱此 有數(shù)據(jù)層险掀,邏輯層,展示層

iOS9新特性

  • 臨時開啟后臺定位

  • iOS9新加了實時交通

  • WKWebView

  • UIAlertView 過期 iOS9使用UIAlertController

  • Multitasking (多任務視圖) (使用Size Class進行布局來支持)

    • 臨時調(diào)出的滑動覆蓋
    • 視頻播放的畫中畫模式
    • 以及真正的同時兩個app的分割視圖
  • MPMoviePlayerCoontroller 過時 (不在繼續(xù)維護),使用AVKit 中的AVPlayerViewController

  • watchOS 2

  • UI Test

  • Swift 2

性能優(yōu)化

  1. cell重用
  2. view盡量不要透明 透明控件渲染耗費的性能較大 設置opaque(不透明)為YES (原因:如果是不透明的炬灭,就不用考慮底下的視圖瘫想,如果是透明的仗阅,則需要考慮透明view底下的view)
  3. 異步加載網(wǎng)絡數(shù)據(jù)
  4. 不要在cellForRow...中綁定數(shù)據(jù),在willDisplay?Cells中綁定數(shù)據(jù)
  5. 盡量減少cell中控件的數(shù)量
  6. 盡量少用 addSubview 給cell 動態(tài)添加view国夜,可以初始化時就添加减噪,然后通過 hidden 控制顯示
  7. 在 heightForRowAtIndexPath: 中盡量不要使用 cellForRowAtIndexPath: (因為heightForRowAtIndexPath調(diào)用的次數(shù)很頻繁)
  8. 提前計算并緩存好高度,因為heightForRowAtIndexPath:是調(diào)用最頻繁的方法之一车吹,一定不要使用自動計算行高
  9. 滑動時按需加載筹裕,這個在大量圖片展示,網(wǎng)絡加載的時候很管用窄驹,目前的第三方框架都處理的很好了朝卒。

自己添加的view會比系統(tǒng)的view要小 性能會更高

設置圖片 可以用畫上去

內(nèi)存優(yōu)化

用SDWebImage加載jif格式文件時會在內(nèi)存中緩存圖片,改用YYWebImage 問題解決乐埠。由于SD是把Gif中的圖片幀存放到數(shù)組抗斤,再進行播放,而YY加載一張播放一張釋放一張

1丈咐、Analyze瑞眼,靜態(tài)分析內(nèi)存泄露的方法。很簡單棵逊,在Xcode菜單欄中點擊 ”Product“ -> "Analyze",編譯完成后項目工程中可能造成內(nèi)存泄露的代碼就會被標記出來负拟,這樣我們就可以有針對性的更改代碼優(yōu)化內(nèi)存了。

2歹河、使用Xcode的自帶工具Leaks掩浙,動態(tài)的檢測內(nèi)存泄露花吟。
1>在Xcode菜單欄中點擊 ”Product“ -> "Profile"(如圖1-1),彈出instruments窗口如圖1-2
2>在instruments窗口中點擊 ”Leaks“(如圖1-2),一般Leaks就開始自動檢測項目內(nèi)存泄露的地方了厨姚,在此過程中可以對手機上運行的測試工程進行操作衅澈,如圖1-3,Leaks 后出現(xiàn)的紅色 柱形表示有內(nèi)存泄露谬墙。
3>雙擊如圖1-4中出現(xiàn)類名今布,就會顯示出此類此方法中造成內(nèi)存泄露的代碼了如圖1-5,然后我們就可以有針對性的優(yōu)化代碼拭抬、優(yōu)化內(nèi)存了部默。

Instruments

  • 使用 Allocations 來檢測內(nèi)存和堆棧信息
  • 使用 Leaks 檢測內(nèi)存的使用情況,包括內(nèi)存泄露問題
  • 使用 Zombies 來檢測過早釋放的僵尸對象造虎,通過它可以檢測出在哪里崩潰的(image lookup -a <崩潰地址>)
  • 使用 Time Profiler 來檢測 CPU 內(nèi)存使用情況

將來是怎么規(guī)劃的傅蹂?

答:三年達到技術總監(jiān)的水平
(技術總監(jiān)需要做什么?:1.技術過硬 2.溝通交流算凿,帶領團隊...)

為什么離開上家公司份蝴?

業(yè)務單一,想要更大的提升空間氓轰,

工作中遇到的難題婚夫?

1> block為空的時候,調(diào)用該block程序會崩潰(Crush)

2> 利用tableView的headerViewForSection:方法獲取headerView時一直是nil署鸡。原因應該是設置headerView時利用- (UIView *)tableView: viewForHeaderInSection:的代理方法返回的UIView應該是UITableViewHeaderFooterView類型的案糙,很多時候被他的返回值(UIView *)誤導了。

3> 項目中需要用到循環(huán)刷新數(shù)據(jù)靴庆,利用NSTimer來實現(xiàn)时捌,但是想在VC銷毀時停掉timer(就是在dealloc方法中停掉),結果發(fā)現(xiàn)dealloc根本不調(diào)用撒穷,原本以為是引用計數(shù)沒有減到0匣椰,可是問題不在此,而就在NSTimer這端礼。結果在viewDidDisappear:停掉timer后就調(diào)用dealloc方法了禽笑。

4> 利用viewWithTag:尋找子View時,出現(xiàn)絕對性的錯誤蛤奥,對象類型都不對佳镜。問題出現(xiàn)在設置的tag有重復,要注意的是子View在包括子View的子View的tag都不可以重復凡桥,所以建議另外創(chuàng)建一個文件專門設定tag蟀伸,就像android中的R.java文件一樣來確保tag的唯一。

5> JS交互時,由于 JavaScriptCore 存在作用域問題 有時會獲取不到 Web 中的元素啊掏。

6> (低級錯誤)請求數(shù)據(jù)的時候蠢络,參數(shù)寫錯(由于參數(shù)都是字符串,沒有提示迟蜜,容易寫錯)

堆和棧的區(qū)別刹孔?

管理方式:
對于棧來講,是由編譯器自動管理娜睛,無需我們手工控制髓霞;
對于堆來說,釋放工作是由程序員控制畦戒。(現(xiàn)在ARC情況方库,不需要手動管理內(nèi)存)

地址分配:
棧是向低地址擴展(地址由高向低分配)的數(shù)據(jù)結構,是一塊連續(xù)的內(nèi)存的區(qū)域障斋。
堆是想高地址擴展(地址由低向高分配)的數(shù)據(jù)結構纵潦,是不連續(xù)的內(nèi)存區(qū)域。(這是由于系統(tǒng)是用鏈表來存儲的空閑內(nèi)存地址的配喳,自然是不連續(xù)的酪穿,而鏈表的遍歷方向是由低地址向高地址)

分配方式:
棧有兩種分配方式:靜態(tài)分配和動態(tài)分配凳干。靜態(tài)分配是由編譯器完成的晴裹,如局部變量的分配。動態(tài)分配由alloca函數(shù)進行分配救赐。
堆都是動態(tài)分配的涧团,沒有靜態(tài)分配的堆。

進程和線程的區(qū)別经磅?

進程:“正在運行”的應用程序(app)泌绣,就是一個進程。
進程為應用程序開辟一塊獨立的內(nèi)存空間预厌。(這塊內(nèi)存空間是受保護的阿迈,進程和進程之間是互不干擾的)

線程:線程執(zhí)行進程(應用程序)中的代碼。
線程是CPU調(diào)度的最小單元轧叽。

進程和線程的關系:
每一個應用程序啟動之后苗沧,都會默認/自動生成一條線程。
進程是由一個或多個線程組成的炭晒,每條線程都可以執(zhí)行不同的代碼待逞。

線程并不是越多越好,原因:
(1)開啟線程需要消耗一定的內(nèi)存(默認情況下网严,一個線程占用512KB的棧區(qū)空間)
(2)會使應用程序增加很多代碼识樱。代碼變多之后,程序的復雜性就會提高。
(3)CPU在多條線程之間來回切換怜庸,線程越到当犯,CPU的負擔就越大

建議:在移動應用的開發(fā)中,一般只開3~5條線程割疾。

XML和JSON解析灶壶?

  • XML解析:

    • 方式一:(框架GDataXML)
      DOM的方式解析是將XML文檔一次性加載到內(nèi)存中,再進行解析杈曲。
      用DOM的方式解析XML需要用到第三方框架 GDataXML
    • 方式二:(蘋果自帶)
      SAX方式解析XML文檔:方式:將XML文檔一行一行逐行進行解析驰凛。需要設置代理,使用代理方法<NSXMLParserDelegate>
  • JSON解析:(蘋果自帶)

    • NSJSONSerialization :JSON 解析器,可以直接將標準的JSON 數(shù)據(jù)解析成 OC 數(shù)據(jù)担扑。
      根據(jù)JSON最外層的類型來判斷是用數(shù)組還是用字典來接收恰响。
      [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];

IT社區(qū)

  • DevDiv:移動開發(fā)社區(qū)
  • 博客園
  • CSDN
  • 簡書
  • cocoachina
  • code4app
  • 51CTO.com:IT技術網(wǎng)站,是一個為CTO、IT技術經(jīng)理涌献、開發(fā)工程師胚宦、項目管理人員...
  • mobilehub (漠河):里邊包含了設計、開發(fā)燕垃、測試枢劝、運營等模塊,各模塊中包含很多其他相關的網(wǎng)站

學習網(wǎng)站

  • w3school:各種語言卜壕,手冊
  • objccn (objc中國):一些分享文章

算法

排序算法:

  • 簡單排序
    • 冒泡排序
    • 選擇排序
    • 插入排序
      • 直接插入排序
      • 折半插入排序(二分插入排序)
  • 快速排序您旁,(常見)
  • 堆排序
  • 歸并排序,(最穩(wěn)定的轴捎,即沒有太差的情況)
直接插入排序

直接插入排序:基本思想:把待排序的紀錄按其關鍵碼值的大小逐個插入到一個已經(jīng)排好序的有序序列中鹤盒,直到所有的紀錄插入完為止,得到一個新的有序序列侦副。

直接插入排序的算法思路
(1) 設置監(jiān)視哨r[0]侦锯,將待插入紀錄的值賦值給r[0];
(2) 設置開始查找的位置j秦驯;
(3) 在數(shù)組中進行搜索尺碰,搜索中將第j個紀錄后移,直至r[0].key≥r[j].key為止译隘;
(4) 將r[0]插入r[j+1]的位置上亲桥。

折半插入

折半插入:執(zhí)行折半插入排序的前提是文件紀錄必須按順序存儲。

希爾排序法

希爾排序法:先選定一個整數(shù)细燎,把待排序文件中所有記錄分成個組两曼,并對每一組內(nèi)的記錄進行排序,重復上述分組和排序的工作玻驻。

堆排序

堆排序:堆排序(Heapsort)是指利用堆積樹(堆)這種數(shù)據(jù)結構所設計的一種排序算法悼凑,它是選擇排序的一種偿枕。可以利用數(shù)組的特點快速定位指定索引的元素户辫。堆分為大根堆和小根堆渐夸,是完全二叉樹。大根堆的要求是每個節(jié)點的值都不大于其父節(jié)點的值渔欢,即A[PARENT[i]] >= A[i]墓塌。在數(shù)組的非降序排序中,需要使用的就是大根堆奥额,因為根據(jù)大根堆的要求可知苫幢,最大的值一定在堆頂。

歸并排序

歸并排序:是建立在歸并操作上的一種有效的排序算法,該算法是采用分治法(Divide and Conquer)的一個非常典型的應用垫挨。將已有序的子序列合并韩肝,得到完全有序的序列;即先使每個子序列有序九榔,再使子序列段間有序哀峻。若將兩個有序表合并成一個有序表,稱為二路歸并哲泊。

查找算法

1> 順序查找

2> 二分查找又稱折半查找剩蟀,它是一種效率較高的查找方法。
【二分查找要求】:1.必須采用順序存儲結構2.必須按關鍵字大小有序排列切威。
【優(yōu)缺點】折半查找法的優(yōu)點是比較次數(shù)少育特,查找速度快,平均性能好;其缺點是要求待查表為有序表牢屋,且插入刪除困難且预。因此槽袄,折半查找方法適用于不經(jīng)常變動而查找頻繁的有序列表烙无。

3> 分塊查找:
方法描述:將n個數(shù)據(jù)元素"按塊有序"劃分為m塊(m ≤ n)。每一塊中的結點不必有序遍尺,但塊與塊之間必須"按塊有序"截酷;即第1塊中任一元素的關鍵字都必須小于第2塊中任一元素的關鍵字;而第2塊中任一元素又都必須小于第3塊中的任一元素乾戏,……迂苛。
操作步驟:
  step1 先選取各塊中的最大關鍵字構成一個索引表;
  step2 查找分兩個部分:先對索引表進行二分查找或順序查找鼓择,以確定待查記錄在哪一塊中三幻;然后,在已確定的塊中用順序法進行查找呐能。

4> 哈希表查找:設計一個函數(shù)(哈希函數(shù)念搬, 也叫做散列函數(shù))抑堡,使得每個元素的關鍵字都與一個函數(shù)值(即數(shù)組下標)相對應,于是用這個數(shù)組單元來存儲這個元素


數(shù)據(jù)結構

常用結構:數(shù)組朗徊、鏈表首妖、堆、棧爷恳、隊列有缆、樹、圖温亲、散列表

是一種特殊的樹形數(shù)據(jù)結構棚壁,每個結點都有一個值。通常我們所說的堆的數(shù)據(jù)結構栈虚,是指二叉堆灌曙。堆的特點是根結點的值最小(或最大)节芥,且根結點的兩個子樹也是一個堆

:是由結點的有窮集合V(點)和邊的集合E組成在刺。其中,為了與樹形結構加以區(qū)別头镊,在圖結構中常常將結點稱為頂點蚣驼,邊是頂點的有序偶對,若兩個頂點之間存在一條邊相艇,就表示這兩個頂點具有相鄰關系颖杏。

散列表

若結構中存在關鍵字和K相等的記錄,則必定在f(K)的存儲位置上坛芽。由此留储,不需比較便可直接取得所查記錄。稱這個對應關系f為散列函數(shù)(Hash function)咙轩,按這個思想建立的表為散列表获讳。

基本算法的思想

回溯:

回溯法也稱試探法,它的基本思想是:從問題的某一種狀態(tài)(初始狀態(tài))出發(fā)活喊,搜索從這種狀態(tài)出發(fā)所能達到的所有“狀態(tài)”丐膝,當一條路走到“盡頭”的時候(不能再前進),再后退一步或若干步钾菊,從另一種可能“狀態(tài)”出發(fā)帅矗,繼續(xù)搜索,直到所有的“路徑”(狀態(tài))都試探過煞烫。這種不斷“前進”浑此、不斷“回溯”尋找解的方法,就稱作“回溯法”滞详。

遞歸:

遞歸凛俱,就是在運行的過程中調(diào)用自己喘落。
構成遞歸需要具備的條件:

  1. 子問題必須與原始問題做同樣的事,且更加簡單最冰。
  2. 不能無限制的調(diào)用本身瘦棋,必須有個出口,化簡為非遞歸的狀態(tài)處理暖哨。

貪心:

貪心算法(又稱貪婪算法)是指赌朋,在對問題求解時,總是做出在當前看來是最好的選擇篇裁。也就是說沛慢,不從整體最優(yōu)上加以考慮,他所做出的是在某種意義上的局部最優(yōu)解达布。

分治:

分治算法的基本思想是將一個規(guī)模為N的問題分解為K個規(guī)模較小的子問題团甲,這些子問題相互獨立且與原問題性質相同。求出子問題的解黍聂,就可得到原問題的解躺苦。即一種分目標完成程序算法,簡單問題可用二分法完成产还。
例:給你一個裝有1 6個硬幣的袋子匹厘。1 6個硬幣中有一個是偽造的,并且那個偽造的硬幣比真的硬幣要輕一些脐区。找出偽幣愈诚。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市牛隅,隨后出現(xiàn)的幾起案子炕柔,更是在濱河造成了極大的恐慌,老刑警劉巖媒佣,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件匕累,死亡現(xiàn)場離奇詭異,居然都是意外死亡丈攒,警方通過查閱死者的電腦和手機哩罪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來巡验,“玉大人,你說我怎么就攤上這事碘耳∠陨瑁” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵辛辨,是天一觀的道長捕捂。 經(jīng)常有香客問我瑟枫,道長,這世上最難降的妖魔是什么指攒? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任慷妙,我火速辦了婚禮,結果婚禮上允悦,老公的妹妹穿的比我還像新娘膝擂。我一直安慰自己,他們只是感情好隙弛,可當我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布架馋。 她就那樣靜靜地躺著,像睡著了一般全闷。 火紅的嫁衣襯著肌膚如雪叉寂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天总珠,我揣著相機與錄音屏鳍,去河邊找鬼。 笑死局服,一個胖子當著我的面吹牛孕蝉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播腌逢,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼降淮,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了搏讶?” 一聲冷哼從身側響起佳鳖,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎媒惕,沒想到半個月后系吩,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡妒蔚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年穿挨,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肴盏。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡科盛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出菜皂,到底是詐尸還是另有隱情贞绵,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布恍飘,位于F島的核電站榨崩,受9級特大地震影響谴垫,放射性物質發(fā)生泄漏。R本人自食惡果不足惜母蛛,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一翩剪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧彩郊,春花似錦前弯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至筷登,卻和暖如春剃根,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背前方。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工狈醉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人惠险。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓苗傅,卻偏偏與公主長得像,于是被迫代替她去往敵國和親班巩。 傳聞我的和親對象是個殘疾皇子渣慕,可洞房花燭夜當晚...
    茶點故事閱讀 43,472評論 2 348

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

  • 一、深復制和淺復制的區(qū)別抱慌? 1逊桦、淺復制:只是復制了指向對象的指針,即兩個指針指向同一塊內(nèi)存單元抑进!而不復制指向對象的...
    iOS_Alex閱讀 1,362評論 1 27
  • 整理一些常見的Android面試題(針對于2~3年開發(fā)經(jīng)驗中所遇到的問題) synchronized鎖靜態(tài)方法和非...
    appzy閱讀 2,275評論 4 18
  • 從三月份找實習到現(xiàn)在强经,面了一些公司,掛了不少寺渗,但最終還是拿到小米匿情、百度、阿里信殊、京東炬称、新浪、CVTE鸡号、樂視家的研發(fā)崗...
    時芥藍閱讀 42,209評論 11 349
  • 之前寫了兩篇我在9月份的Android崗校招面試經(jīng)歷:2016年9月Android崗面試經(jīng)歷-網(wǎng)易/騰訊 和 20...
    JianlingZhou閱讀 3,022評論 3 34
  • 今天像通常一樣下班转砖,坐電梯,同事都步履不停的走向回家的路鲸伴。自從在這上班時府蔗,也許是因為陌生,感覺現(xiàn)在的人都不太愿意別...
    water_3bbb閱讀 144評論 0 0