撩課-Web大前端天天5道面試題-Day37

1.描述一下React 生命週期?

渲染過程調用到的生命週期函數,主要幾個要知道;
 * constructor
 * getInitialState
 * getDefaultProps
 * componentWillMount
 * render
 * componentDidMount

 更新過程

 * componentWillReceiveProps
 * shouldComponentUpdate
 * componentWillUpdate
 * render
 * componentDidUpdate

 卸載過程

 componentWillUnmount

複製代碼

2.實現組件有哪些方式?

React.createClass 使用API來定義組件
 React ES6 class component 用 ES6 的class 來定義組件
 Functional stateless component 經過函數定義無狀態組件
複製代碼

3.shouldComponentUpdate函數有什麼做用?

shouldComponentUpdate是一個容許咱們自行決定某些組件(以及他們的子組件)是否進行更新的生命週期函數,
reconciliation的最終目的是儘量以最有效的方式去根據新的state更新UI,
若是你已經知道UI的哪些狀態無需進行改變,就不必去讓React去判斷它是否該改變。
讓shouldComponentUpdate返回falss, React就會讓當前的組件和其子組件保持不變。
複製代碼

4.手寫數組快速排序

快速排序」的思想很簡單,整個排序過程只須要三步:
(1)在數據集之中,選擇一個元素做爲」基準」(pivot)。
(2)全部小於」基準」的元素,都移到」基準」的左邊;全部大於」基準」的元素,都移到」基準」的右邊。
(3)對」基準」左邊和右邊的兩個子集,不斷重複第一步和第二步,直到全部子集只剩下一個元素爲止。
 代碼:

  var quickSort = function(arr) {
&emsp;if (arr.length <= 1) { return arr; }
&emsp;var pivotIndex = Math.floor(arr.length / 2);
&emsp;var pivot = arr.splice(pivotIndex, 1)[0];
&emsp;var left = [];
&emsp;var right = [];
&emsp;for (var i = 0; i < arr.length; i++){
&emsp;&emsp;&emsp;&emsp;if (arr[i] < pivot) {
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;left.push(arr[i]);
&emsp;&emsp;&emsp;&emsp;} else {
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;right.push(arr[i]);
&emsp;&emsp;&emsp;&emsp;}
&emsp;&emsp;}
&emsp;&emsp;return quickSort(left).concat([pivot], quickSort(right));
};
複製代碼

5.判斷一個字符串中出現次數最多的字符,並統計次數?

var str = 'shdshdfjkfjfdgjkjdksgjskdjfsfsfsfjksjkfdkjf'

 var arr = str.split('').sort()//把字符串變爲數組,在排序                        

 str = arr.join('') //把排序好的數組,變爲字符串

 var count = 0  //不能使用undefined,轉化爲數字是NaN

 var char = 0

 var reg = /(\w)\1+/g                       

 str.replace(reg,function(parent,son){                                   

     if(parent.length >count){

              count = parent.length

              char = son
      }                                   
 })

 console.log("最多的字符爲:"+char+";個數爲:"+count)         

 拓展:replace方法:

 replace語法:

 replace(reg,function(parent,son1,son2,index){

 第一個參數:匹配成功的子字符串(parent)

 第二個參數:第一個分組內容;(son)

  第三個參數:第二個分組內容;(son2)

 ...

 最後一個爲開始的下標

 })

 <script type="text/javascript">

 var data = '2019-1-8'

 var reg = /(\d*)-/g

 var data = data.replace(reg,function(parent,son1,index){  //此時沒有son2

 console.log(parent) //2019- , 1-                             

 console.log(son1) //2019 , 1

 console.log(index) //0  5  開始匹配的下標

 return son1+'.'                                   

 })

 console.log(data) //2016.6.8                                   

 </script>         

 使用replace()基本方法

 var data = '2019-1-8'

 var reg = /-/g

 var data = data.replace(reg,'.')

 console.log(data)  //2019.1.
複製代碼
相關文章
相關標籤/搜索