4月面試真題
本套真題是筆者去美團(tuán)面試(社招)分享的,答案由筆者及其朋友總結(jié)庶柿,如有問題請及時(shí)糾正。
1. 說說你對http和https的了解
http :
(1)浮庐、超文本傳輸協(xié)議 (HTTP甚负,HyperText Transfer Protocol)是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議审残。所有的WWW文件都必須遵守這個(gè)標(biāo)準(zhǔn)梭域。
(2)搅轿、http 是一個(gè)客戶端和服務(wù)器端請求和應(yīng)答的標(biāo)準(zhǔn)(TCP)病涨,也是客戶端瀏覽器或其他程序與Web服務(wù)器之間的應(yīng)用層通信協(xié)議璧坟,其處于OSI7層模型中的應(yīng)用層既穆。
(3)、http協(xié)議采用了請求/響應(yīng)模型循衰。客戶端向服務(wù)器發(fā)送一個(gè)請求会钝,請求頭包含請求的方法、URL工三、協(xié)議版本、以及包含請求修飾符俭正、客戶信息和內(nèi)容奸鬓。
(4)掸读、http協(xié)議的客戶/服務(wù)器模式的信息交換過程串远,它分四個(gè)過程:建立連接儿惫、發(fā)送請求信息澡罚、發(fā)送響應(yīng)信息、關(guān)閉連接留搔。
(5)、http報(bào)文由從客戶機(jī)到服務(wù)器的請求和從服務(wù)器到客戶機(jī)的響應(yīng)構(gòu)成铛铁。請求報(bào)文格式如下:請求行 - 通用信息頭 - 請求頭 - 實(shí)體頭 - 報(bào)文主體
(6)、狀態(tài)消息code
https :
(1)饵逐、https(全稱:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全為目標(biāo)的http通道倍权,簡單講是http的安全版哺窄。
(2)账锹、為了數(shù)據(jù)傳輸?shù)陌踩纫担琀TTPS在HTTP的基礎(chǔ)上加入了SSL協(xié)議奸柬,SSL依靠證書來驗(yàn)證服務(wù)器的身份生年,并為瀏覽器和服務(wù)器之間的通信加密
HTTPS和HTTP的區(qū)別主要為以下四點(diǎn):
一廓奕、https協(xié)議需要到ca申請證書抱婉,一般免費(fèi)證書很少档叔,需要交費(fèi)蒸绩。
二衙四、http是超文本傳輸協(xié)議患亿,信息是明文傳輸传蹈,https 則是具有安全性的ssl加密傳輸協(xié)議步藕。
三惦界、http和https使用的是完全不同的連接方式咙冗,用的端口也不一樣沾歪,前者是80,后者是443灾搏。
四、http的連接很簡單立润,是無狀態(tài)的;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)行加密傳輸范删、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,比http協(xié)議安全到旦。
2. 說說你對delegate和block的了解
除了要講述原理旨巷、注意點(diǎn)添忘、可能發(fā)生的問題采呐,還要會手寫搁骑,注意手寫斧吐,告誡我們沒事多寫寫代碼,手寫煤率。
3. 談?wù)刬sa指針 (本題,博主尚在了解……)
在Objective-C中乏冀,任何類的定義都是對象。類和類的實(shí)例(對象)沒有任何本質(zhì)上的區(qū)別辆沦。任何對象都有isa指針识虚。
4. 談?wù)劸€程及其安全問題
iOS提供了幾種線程方式,根據(jù)自己的項(xiàng)目或是自己理解聊聊
5. 介紹下分類category 妒茬,extension
category : 本題答案參考2018年iOS面試真題(一)
extension : 就是匿名的分類,只有頭文件沒有實(shí)現(xiàn)文件乍钻。只能擴(kuò)展方法肛循,不能添加成員變量团赁。擴(kuò)展的方法只能在原類中實(shí)現(xiàn)。例如你擴(kuò)展NSString,那么你只能在NSString的.m實(shí)現(xiàn)(這當(dāng)然是不可能的欢摄,不過大致和這個(gè)類似)。
**6. 將請求參數(shù)取出笋粟,并組成字典 ** 這是一個(gè)算法問題
url:https://www/baidu.com?name=test&passowrd=123456
**7.關(guān)于atomic和noatomic **
原子鎖、安全和不安全害捕、效率
atomic:系統(tǒng)生成的 getter/setter 會保證 get、set 操作的完整性尝盼,不受其他線程影響吞滞。比如盾沫,線程 A 的getter 方法運(yùn)行到一半裁赠,線程 B 調(diào)用了 setter:那么線程 A 的 getter 還是能得到一個(gè)完好無損的對象赴精。(多線程中)
nonatomic:就沒有這個(gè)保證了佩捞。所以,nonatomic的速度要比atomic快一忱。(我們程序中很少用多線程所以常用nonatomic)。