天天看點

【面試題】面試小技巧:如果有人問你 xxx 技術是什麼?

【面試題】面試小技巧:如果有人問你 xxx 技術是什麼?

背景

在前幾天,有一個朋友突然問了我一個問題,說如果有人問你“React 是什麼?你怎麼回答。 ”,我當時脫口而出“React 是一個網頁 UI 架構一個,它的特點聲明式、元件化、元件化、一次學習随處編寫。”。我感覺這樣回答沒毛病,skr~。

據這個朋友說這個題目來源于之前他的一次大廠面試,面試官看他在履歷上寫着精通 React , 是以第一個問題就是問他“ React 是什麼?”。然而他的回答也和我回答的差不多,但是回答完,面試官對這個回答不是很滿意。

是以對這個問題産生了一個疑問?如何回答這個問題才能讓面試官滿意了。或者說如何回答這個問題,才能讓重來都麼有接觸過 React 的人知道 React 是一個什麼了?。我在網絡上也看了很多人多這個問題的回答,總結了一下思路,可以從以下方面來回答這個問題:

  • React 的本質
  • React 出現的背景,為什麼出現?解決什麼問題?
  • React 的用途
  • React 的核心思想,他的優點是什麼?
  • 反過來想想它的缺點
【面試題】面試小技巧:如果有人問你 xxx 技術是什麼?

通過這篇文章,你将知道這一類問題怎麼回答。我們這篇文章以 React 為例。

1. React 的本質

先總結 React 是一個網頁 UI 架構。

2. React 出現的背景

在說背景,任何技術的出現都是在一定的背景下,在講講 React 出現的背景。我記得我在我最早寫前端的時候,還是使用的 jQuery、AngularJS。

最早浏覽器相容是最大的問題,出現了jQuery, jQuery 封裝了 DOM 操作、樣式選擇器、鍊式調用、Ajax等基礎的函數。jQuery 把Html、Css、Js 攪拌在一起就成了一個網頁。但是并沒有一個模式有序的來組織這些原料。随着頁面的功能越來越多、越來越酷炫,前端的工程越來越大,jQuery 組織代碼,解決代碼複用率成為一個待解決的問題。如果在現在來看,jQuery 本質是一個工具函數。

2009年,AngularJS 借鑒了Java MVC 的思想,還強行灌入了 controller、$scope、service 等一系列概念。如同 Spring Boot,AngularJS 提供了一攬子全家桶解決方案,從底層開始深度封裝,向上提供了路由、雙向綁定、指令、元件等架構特性。但也正是因為它龐大複雜的概念,你在使用 AngularJS 進行開發的時候,需要先學習各種機率,需要編寫大量的面條代碼。

但是這些架構都還有兩個問題待解決:

  • 元件複用性薄弱
  • 前端工程越來越大,前面幾種方案不能很好的支援單元測試。

在這樣的背景下,React 誕生了。React 帶來了新的思維模式,UI = fn(props),React 中一個元件就是一個函數或者一個類,一個函數或者一個類就是一個基礎機關,然後把這些基礎機關組合在一起,這就是『組合』的魅力,在設計模式中有一句話『組合大于繼承』。React通過元件的方式來解決複用性的問題。是以 React 本質是一個元件化架構。React 也解決了元件複用性薄弱的問題,也很好的支援了單元測試。

3. React 的用途

然後說 React 的用途,由于 React 虛拟 DOM 的關系,在用途上非常的豐富。

  • 無論是 PC 還是移動端,都是支援的。
  • React Native 即可開發 iOS 也可開發安卓。
  • React 360 可開發 VR。
  • 冷門的 ink,也可以使用 React 開發指令行。

4. React 的核心思想,他的優點是什麼?

說完用途,在講講核心思想,也就是 React 的有點,很多人在面試時,經常在把自己知道的源碼亂說一氣,來證明自己對 React 很了解。其實個人感覺說源碼還不如說說它核心思想是什麼。它的優點是什麼。

1. 聲明式

聲明式的優勢就是直覺,可以一目了然,也便于組合。

2. 元件化

元件化的好處是低耦合,高内聚,以元件為基礎機關,進行組合。對前端工程化是極大的優化。React 沒有差用模闆文法,而是使用了聲明 jsx這樣的書寫方式。

3. 通用性

React 的通用性源于虛拟 DOM,React 将 DOM 抽象為虛拟 DOM,開發者不在直接操作 DOM,正式由于這一層的封裝,React 的不在局限于 Web 開發,還可以開發 iOS、安卓、VR、指令行腳本。隻要能相容虛拟 DOM,都能使用 React 開發。

5. 反過來想想它的缺點

最後還是要客觀的想想來看待,辯證的回來想想 React 有什麼缺點,所有的東西肯定有缺點,沒有完美的東西。React 也一樣。React 的優點就是React 的核心思路,聲明式,元件化,通用性。缺點了,個人覺得對于一個開發者來說,當我使用完 Vue 之後再來使用 React,你會發現 React 并不是一個完全體,當你在開發一個應用時,很多東西你都需要去社群尋求并找到解決方案,這對于研發者來說,需要投入學成本。但是這其實在某些角度來看,這也并不算缺點,這間接的讓 React 社群蓬勃發展。

總結

文章回答了最開始的問題 ”React 是什麼?“。通過以 React 為例,可以延伸到這一類問題,如:

  • React 是什麼?解釋 React 是什麼?你了解 React 嗎?談一談你對 React 的了解?
  • 說說什麼是 Vue?你了解 Vue 嗎?
  • xx 技術是什麼?你對 xx 技術了解嗎?

繼續閱讀