整理一下面經(jīng)(美團二三面)

給button加圓角的方式

1.cornerRadius五督。

2.使用貝塞爾曲線畫圓角

貝塞爾和Core Graphics畫圓角:用貝塞爾曲線畫出一個圓形圖彰导,然后將button的image設(shè)置為該圖浊闪;

3.使用CAShapeLayer和貝塞爾設(shè)置圓角:alloc一個CAshapeLayer,用貝塞爾畫出圓形path賦值給layer螺戳,將button的layer.mask屬性設(shè)置為layer;

CALayer和UIVIew

1 :首先呢CAlayer 是直接繼承自NSObjec的折汞,而UIview倔幼、UIVC、UIkit類中的爽待、UIAppliation都是繼承自UIResponder损同,在其中定義了各種事件處理的接口;

2:一個 Layer 的 frame 是由它的 anchorPoint,position,bounds,和 transform 共同決定的鸟款,而一個 View 的 frame 只是簡單的返回 Layer的 frame膏燃,同樣 View 的 center和 bounds 也是返回 Layer 的一些屬性

3:UIView是CALayer的Delegate,它偏向于管理顯示內(nèi)容何什,而layer偏向于繪制內(nèi)容组哩;

4:修改非rootLayer會產(chǎn)生隱式動畫;

Button圓角的觸控區(qū)域

擴展觸控區(qū)域要用到Runtime处渣,因為Category不能添加屬性伶贰,這時候就需要動態(tài)的為其添加擴展距離的屬性,然后用Associative Object關(guān)聯(lián)對象罐栈,動態(tài)的添加擴展距離屬性黍衙;

1.  static char topNameKey;  //設(shè)置屬性。擴展的大熊堋琅翻;

2.  (void) setEnlargeEdgeWithTop:(CGFloat) top right:(CGFloat) right bottom:(CGFloat) bottom left:(CGFloat) left  //設(shè)置關(guān)聯(lián)屬性

3.  {  

4.  objc_setAssociatedObject(self, &topNameKey, [NSNumber numberWithFloat:top], OBJC_ASSOCIATION_COPY_NONATOMIC);  

1.  ?

2.  擴展大小柑贞;
3.  (CGRect) enlargedRect  

4.  {  

5.  NSNumber* topEdge = objc_getAssociatedObject(self, &topNameKey);  

6.  NSNumber* rightEdge = objc_getAssociatedObject(self, &rightNameKey);  

7.  NSNumber* bottomEdge = objc_getAssociatedObject(self, &bottomNameKey);  

8.  NSNumber* leftEdge = objc_getAssociatedObject(self, &leftNameKey);  

9.  if (topEdge && rightEdge && bottomEdge && leftEdge)  

10.  {  

11.  return CGRectMake(self.bounds.origin.x - leftEdge.floatValue,  

12.  self.bounds.origin.y - topEdge.floatValue,  

13.  self.bounds.size.width + leftEdge.floatValue + rightEdge.floatValue,  

14.  self.bounds.size.height + topEdge.floatValue + bottomEdge.floatValue);  

15.  }  

16.  else  

17.  {  

18.  return self.bounds;  

19.  }  

20.  }  

重寫HitTest

1.  - (UIView*) hitTest:(CGPoint) point withEvent:(UIEvent*) event  

2.  {  

3.  CGRect rect = [self enlargedRect];  

4.  if (CGRectEqualToRect(rect, self.bounds))  

5.  {  

6.  return [super hitTest:point withEvent:event];  

7.  }  

8.  return CGRectContainsPoint(rect, point) ? self : nil;  

9.  } 

hittest

IOS響應(yīng)鏈方椎,點擊事件和手勢哪個先觸發(fā)

image.png

如果hit-test view或first responder不處理此事件,則將事件傳遞給其nextResponder處理凌外,若有UIViewController對象則傳遞給UIViewController辩尊,傳遞給其superView。

如果view的viewController也不處理事件康辑,則viewController將事件傳遞給其管理view的superView摄欲。

視圖層級結(jié)構(gòu)的頂級為UIWindow對象轿亮,如果window仍不處理此事件,傳遞給UIApplication.

若UIApplication對象不處理此事件胸墙,則事件被丟棄我注。

巧妙使用Responder:

根據(jù)一個view對象,沒有直接的方法可以得到管理它的viewController,但我們使用responder chain可以間接的得到,代碼如下:

@implementation UIView (ParentController)

-(UIViewController*)parentController{

UIResponder *responder = [self nextResponder];

while (responder) {

    if ([responder isKindOfClass:[UIViewController class]]) {

            return (UIViewController*)responder;

    }

    responder = [responder nextResponder];

}

return nil;

}

@end

https://blog.csdn.net/chun799/article/details/8223612

GCD迟隅,dispatch_once的作用(線程安全)

http://www.reibang.com/p/2d57c72016c6

iOS死鎖的觸發(fā)條件

雙向阻塞會發(fā)生死鎖但骨;

比如我用GCD創(chuàng)建一個Sync同步的主線程任務(wù),這個任務(wù)是一個閉包智袭,此時就會等待閉包執(zhí)行完畢奔缠,而此時主線程又是阻塞狀態(tài),造成了雙向的阻塞吼野;

循環(huán)引用

http://www.reibang.com/p/ddfd1b3c0298

HTTP和HTTPS

HTTPS和HTTP的區(qū)別主要如下:

1校哎、https協(xié)議需要到ca申請證書,一般免費證書較少瞳步,因而需要一定費用闷哆。

2、http是超文本傳輸協(xié)議单起,信息是明文傳輸抱怔,https則是具有安全性的ssl加密傳輸協(xié)議。

3嘀倒、http和https使用的是完全不同的連接方式屈留,用的端口也不一樣,前者是80测蘑,后者是443绕沈。

4、http的連接很簡單帮寻,是無狀態(tài)的乍狐;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議固逗,比http協(xié)議安全浅蚪。

鏈接:https://www.jianshu.com/p/6db0c6dc97a9

SSL證書,CA證書

https://www.cnblogs.com/handsomeBoys/p/6556336.html

Socket

可選類型的實現(xiàn)

(some烫罩、none)EMUM枚舉

TCP和UDP

image.png

Tcp/IP惜傲。慢啟動

https://blog.csdn.net/jtracydy/article/details/52366461

進程通信方式

消息傳遞(管道、FIFO贝攒、消息隊列)

同步(互斥量盗誊、條件變量、讀寫鎖、文件和寫記錄鎖哈踱、信號量)

共享內(nèi)存(匿名的和具名的)

遠程過程調(diào)用(Solaris門和Sun RPC)

1.管道(pipe)

管道是一種具有兩個端點的通信通道荒适,一個管道實際上就是只存在在內(nèi)存中的文件,對這個文件操作需要兩個已經(jīng)打開文件進行开镣,他們代表管道的兩端刀诬,也叫兩個句檳,管道是一種特殊的文件邪财,不屬于一種文件系統(tǒng)陕壹,而是一種獨立的文件系統(tǒng),有自己的數(shù)據(jù)結(jié)構(gòu)树埠,根據(jù)管道的使用范圍劃分為無名管道和命名管道糠馆。

無名管道用于父進程和子進程之間,通常父進程創(chuàng)建管道怎憋,然后由通信的子進程繼承父進程的讀端點句柄和寫端點句柄漱牵,或者父進程有讀寫句柄的子進程晴股,這些子進程可以使用管道直接通信犬庇,不需要通過父進程悲伶。

命名管道熊杨,命名管道是為了解決無名管道只能在父子進程間通信而設(shè)計的孔轴,命名管道是建立在實際的磁盤介質(zhì)或文件系統(tǒng)(而不是只存在內(nèi)存中)筋现,任何進程可以通過文件名或路徑建立與該文件的聯(lián)系矾睦,命名換到需要一種FIFO文件(有先進先出的原則)掉奄,雖然FIFO文件的inode節(jié)點在磁盤上规个,但僅是一個節(jié)點而已,文件的數(shù)據(jù)還是存在于內(nèi)存緩沖頁面中姓建,和普通管道相同诞仓。

2.信號

信號,用于接受某種事件發(fā)生速兔,除了用于進程間通信之外墅拭,進程還可以發(fā)送信號給進程本身。除了系統(tǒng)內(nèi)核和root之外涣狗,只有具備相同id的進程才可以信號進行通信谍婉。

3.消息隊列

消息隊列是消息的鏈表,包括Posix消息隊列和system v消息隊列(Posix常用于線程镀钓,system常用于進程)穗熬,有權(quán)限的進程可以向消息隊列中添加消息,有讀權(quán)限的進程可以讀走消息隊列的消息丁溅。

消息隊列克服了信號承載信息量少唤蔗,管道只能承載無格式字節(jié)流及緩沖區(qū)大小受限等缺陷。

4.共享內(nèi)存

共享內(nèi)存使多個進程可以訪問同一塊內(nèi)存空間,是最快的IPC形式妓柜,是針對其他通信方式運行效率低而設(shè)計的箱季,往往與其他進程結(jié)合使用,如與信號量結(jié)合领虹,來達到進程間的同步與互斥规哪。傳遞文件最好用共享內(nèi)存的方式。 

進程線程區(qū)別

https://blog.csdn.net/yanxiaolx/article/details/51763372

進程是cpu資源分配的最小單位塌衰,線程是cpu調(diào)度的最小單位诉稍。

Swift重載運算符

OC和C++實現(xiàn)類的方式

OC和C++的區(qū)別

一個應(yīng)用問題,怎么設(shè)計完成一個網(wǎng)盤系統(tǒng)(圖的遍歷計算總大小最疆、多線程下載)

控制同時下載的文件的個數(shù)(控制并發(fā)數(shù)目)

算法題:二維數(shù)組螺旋輸出

美團三面:

你在上兩面哪里表現(xiàn)的好杯巨,哪里不好?
大學(xué)中你覺得最難的一門課是什么努酸,怎么去克服的服爷?
團隊中出現(xiàn)矛盾怎么解決
怎么協(xié)調(diào)與團隊成員的關(guān)系
對你影響最大的一個項目
你對美團的技術(shù)團隊有了解么(。获诈。之前不小心看到了美團技術(shù)團隊的博客然后巴拉巴拉扯了一下)
你對美團公司的了解呢
你平時是怎么學(xué)習(xí)的
CPU知道線程和進程么仍源?
CPU怎么調(diào)度進程的
阻塞IO/非阻塞IO。舔涎。笼踩。
用戶態(tài)和內(nèi)核態(tài)
MVVM的特點和好處
IOS進程鎖機制
進程通信的方式
IOS代碼規(guī)范
IOS代碼風(fēng)格
Swift什么優(yōu)點
動態(tài)語言和靜態(tài)語言
弱類型和強類型語言
網(wǎng)絡(luò)請求數(shù)據(jù)交換格式了解多少
代碼自動化的問題
又一個2048游戲,寫一下他的需求文檔亡嫌,你會怎么寫
你有什么想問的(我問了我們美團上海的主要是做什么的)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嚎于,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子挟冠,更是在濱河造成了極大的恐慌于购,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件知染,死亡現(xiàn)場離奇詭異肋僧,居然都是意外死亡,警方通過查閱死者的電腦和手機控淡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門色瘩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人逸寓,你說我怎么就攤上這事居兆。” “怎么了竹伸?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵泥栖,是天一觀的道長簇宽。 經(jīng)常有香客問我,道長吧享,這世上最難降的妖魔是什么魏割? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮钢颂,結(jié)果婚禮上钞它,老公的妹妹穿的比我還像新娘。我一直安慰自己殊鞭,他們只是感情好遭垛,可當(dāng)我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著操灿,像睡著了一般锯仪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上趾盐,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天庶喜,我揣著相機與錄音,去河邊找鬼救鲤。 笑死久窟,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的本缠。 我是一名探鬼主播斥扛,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼搓茬!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起队他,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤卷仑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后麸折,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锡凝,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年垢啼,在試婚紗的時候發(fā)現(xiàn)自己被綠了窜锯。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡芭析,死狀恐怖锚扎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情馁启,我是刑警寧澤驾孔,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布芍秆,位于F島的核電站,受9級特大地震影響翠勉,放射性物質(zhì)發(fā)生泄漏妖啥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一对碌、第九天 我趴在偏房一處隱蔽的房頂上張望荆虱。 院中可真熱鬧,春花似錦朽们、人聲如沸怀读。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽愿吹。三九已至,卻和暖如春惜姐,著一層夾襖步出監(jiān)牢的瞬間犁跪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工歹袁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留坷衍,地道東北人。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓条舔,卻偏偏與公主長得像枫耳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子孟抗,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,440評論 2 348