React Native 面試題整理(含答案)

1:React Native 相對于原生IOS、Android有哪些優(yōu)勢带斑?

答:

1:性能方面媲美原生App嘶朱。

2:絕大部分代碼同時(shí)適用IOS/Android,一套代碼兩系統(tǒng)適用丑搔。

3:使用Javascript編碼,上手容易提揍。

4:組件式開發(fā)啤月,易于管理維護(hù),代碼復(fù)用率高劳跃。

5:代碼更改后會自動(dòng)刷新谎仲,節(jié)省等待時(shí)間。

6:支持熱更新刨仑,更新無需重新安裝App郑诺。

2:React Native 組件的生命周期

答:和react組件的生命周期一致。

3:調(diào)用setState之后發(fā)生了什么杉武?

答:

1:將傳入的參數(shù)對象與當(dāng)前的狀態(tài)合并辙诞,然后觸發(fā)調(diào)和過程。

2:在調(diào)和過程中react會根據(jù)新的狀態(tài)以相對高效的方式構(gòu)建react元素樹轻抱。

3:react會對新舊元素樹進(jìn)行diff算法計(jì)算出差異飞涂,然后根據(jù)差異進(jìn)行最小化渲染。

4: reactJS中使用props.children.map()可能會報(bào)錯(cuò),為什么较店?應(yīng)該怎么處理士八?

答:

根據(jù)js map()函數(shù)的語法,只支持Array.map(), 所以props.children的值為非數(shù)組時(shí)就會報(bào)錯(cuò)梁呈!

解決辦法一:加值類型判斷婚度,符合Array時(shí)調(diào)用map()。

解決辦法二:使用系統(tǒng)提供的React.Children.map();

下邊我們看看props.children可能的值有哪些:

1:undefined 2: string 3: object 4: array;

解決辦法二:

5:簡述CodePush

答:

CodePush是微軟開發(fā)的一個(gè)云服務(wù)器捧杉,為開發(fā)者提供了熱更新應(yīng)用程序的服務(wù)陕见。

React Native 和 Cordova 的開發(fā)者可以通過CodePush直接部署移動(dòng)應(yīng)用更新給用戶設(shè)備秘血。

CodePush作為一個(gè)中央倉庫味抖,開發(fā)者可以推送更新(JS/HTML/CSS/IMAGES),應(yīng)用可以通過客戶端SDK查詢更新灰粮。

在修復(fù)一些小問題和添加新特性的時(shí)候仔涩,不需要二進(jìn)制打包,可以直接推送代碼進(jìn)行實(shí)時(shí)更新粘舟。

CodePush支持的功能:

直接對用戶部署代碼更新熔脂。

管理Alpha, Beta和生產(chǎn)環(huán)境應(yīng)用。

支持React Native 和 Cordova柑肴。

支持JS文件與圖片資源的更新

6:JS如何與原生相互調(diào)用霞揉?

答:

一:JS調(diào)用原生方法

第一種:和原生約定好,通過原生劫持JS發(fā)出的請求進(jìn)行原生調(diào)用晰骑。

第二種:webView添加要調(diào)用的原生方法接口适秩,直接調(diào)用。

第三種:利用第三方庫實(shí)現(xiàn)硕舆,如Andriod第三方庫 JSBridge秽荞。安全便捷。

二:原生調(diào)用JS

第一種:直接使用webView.evaluateJavacript()實(shí)現(xiàn)抚官。

第二種:利用三方庫扬跋,如JSBridge來實(shí)現(xiàn)。

第一種實(shí)現(xiàn)用例:

第二種實(shí)現(xiàn)方式用例:

7:說說你對Immutable的理解

答:

Javascript 中的對象一般是可變的(Mutable)凌节。 因?yàn)槭褂昧艘觅x值钦听,新的對象簡單的引用了原始對象,新舊對象的修改都將影響到彼此倍奢。雖然這樣做可以節(jié)省內(nèi)存朴上,但應(yīng)用變得復(fù)雜后,這就造成了非常大的隱患娱挨,Mutable帶來的優(yōu)點(diǎn)變得得不償失余指。為了解決這個(gè)問題,一般的做法是使用深淺拷貝來避免修改,但這樣又造成了CPU和內(nèi)存的浪費(fèi)酵镜。

而Immutable可以很好地解決這些問題碉碉。

目前流行的Immutable庫有兩個(gè):

1: immutable.js

2: seamless-immutable

Imutable優(yōu)點(diǎn):

1:降低了Mutable帶來的復(fù)雜度

2:節(jié)省內(nèi)存

3:Undo/Redo, Copy/Paste, 甚至?xí)r間旅行這些功能做起來都是小菜一碟。

4:并發(fā)安全

5:擁抱函數(shù)式編程

Immutable缺點(diǎn):

1:需要學(xué)習(xí)新的API

2:? 增加了資源文件的大小

3:容易和原生對象混淆

什么是Immutable Data?

Immutable Data是一旦被創(chuàng)建淮韭,就不能被更改的數(shù)據(jù)垢粮。對Immutable 對象的任何修改或添加刪除操作都會返回一個(gè)新的Immutable 對象似忧。Immutable 實(shí)現(xiàn)原理是持久化數(shù)據(jù)結(jié)構(gòu)(Persistent Data Structure),也就是使用舊數(shù)據(jù)創(chuàng)建新數(shù)據(jù)的同時(shí)要保證舊數(shù)據(jù)的可用且不變职车。同時(shí)又為了避免深拷貝把所有節(jié)點(diǎn)都復(fù)制一遍帶來的性能損耗,Immutable 使用了Structure Sharing(結(jié)構(gòu)共享)征绎,即如果對象樹中一個(gè)節(jié)點(diǎn)發(fā)生變化占键,只修改這個(gè)節(jié)點(diǎn)和受它影響的父節(jié)點(diǎn)昔善,其他節(jié)點(diǎn)則進(jìn)行共享∨弦遥看下圖動(dòng)畫

詳細(xì)參考:https://github.com/camsong/blog/issues/3

8:InteractionManager

答:

InteractionManager可以將一些耗時(shí)較長的工作安排到所有互動(dòng)或動(dòng)畫后執(zhí)行君仆,這樣可以保證JS動(dòng)畫的流暢性。如:Navigator轉(zhuǎn)場動(dòng)畫牲距。

延遲計(jì)劃函數(shù)比較:

requestAnimationFrame(): 用來執(zhí)行在一段時(shí)間內(nèi)控制視圖動(dòng)畫的代碼返咱。

setImmediate/setTimeout(): 在稍后執(zhí)行代碼。注意這有可能會延遲當(dāng)前正在進(jìn)行的動(dòng)畫牍鞠。

runAfterInteractions(): 在稍后執(zhí)行代碼咖摹,不會延遲當(dāng)前進(jìn)行的動(dòng)畫。

9:緩存用的是什么难述?

答:

AsyncStorage 它是一個(gè)簡單的萤晴、異步的、持久化的鍵值對存儲系統(tǒng)龄广,它對于App來說是全局的硫眯。可以用來替代LocalStorage择同。

官網(wǎng)推薦在此基礎(chǔ)上封裝一層两入,不要直接使用。

在IOS上敲才,AsyncStorage 在原生端的實(shí)現(xiàn)是把較小值存放在序列化的字典中裹纳,而把較大值寫入單獨(dú)的文件。

在Android上紧武,AsyncStorage會嘗試使用RocksDB,或退而選擇SQLite剃氧。

用例:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市阻星,隨后出現(xiàn)的幾起案子朋鞍,更是在濱河造成了極大的恐慌已添,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件滥酥,死亡現(xiàn)場離奇詭異更舞,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)坎吻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進(jìn)店門缆蝉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人瘦真,你說我怎么就攤上這事刊头。” “怎么了诸尽?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵原杂,是天一觀的道長。 經(jīng)常有香客問我弦讽,道長污尉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任往产,我火速辦了婚禮,結(jié)果婚禮上某宪,老公的妹妹穿的比我還像新娘仿村。我一直安慰自己,他們只是感情好兴喂,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布蔼囊。 她就那樣靜靜地躺著,像睡著了一般衣迷。 火紅的嫁衣襯著肌膚如雪畏鼓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天壶谒,我揣著相機(jī)與錄音云矫,去河邊找鬼。 笑死汗菜,一個(gè)胖子當(dāng)著我的面吹牛让禀,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播陨界,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼巡揍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了菌瘪?” 一聲冷哼從身側(cè)響起腮敌,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后糜工,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體斗这,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年啤斗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了表箭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,654評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡钮莲,死狀恐怖免钻,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情崔拥,我是刑警寧澤极舔,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站链瓦,受9級特大地震影響拆魏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜慈俯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一渤刃、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧贴膘,春花似錦卖子、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至突梦,卻和暖如春诫舅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背宫患。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工刊懈, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人撮奏。 一個(gè)月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓俏讹,卻偏偏與公主長得像,于是被迫代替她去往敵國和親畜吊。 傳聞我的和親對象是個(gè)殘疾皇子泽疆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評論 2 349

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