2020海康校招(筆試+2輪面試)復盤


**真的勇士,敢於在跌倒的地方爬起來。**

校招參加的第一場筆試,意料之中的不理想,但是從哪里跌倒的從哪里爬起來,把每次都當作查漏補缺,就沒那么難受了(555...)

終於肝完論文了,補上二面涼經。。。

題型
題型分為單選(16*2.5')、多選(4*2.5')、問答(2*10')和編程(2*15')

筆試總體感覺

印象中感覺單選題不難,基本都是基礎知識,除了前端必須的一些基礎點,數據結構里面堆棧列表二叉樹也要知道一點。

多選有一題不太清楚,input的type取值選項,我選了2個,去了MDN看一下,哦豁,這個選擇還蠻多,對比一下,我漏選了一個。

簡答題自由發揮,CSS選擇器優先級和JS垃圾回收,感覺JS垃圾回收回答得不太好,不准確。

兩個編程題最耗時間:js 駝峰命名和下划線互換,字母異位詞分組(LeetCode原題)。一不小心忘記了時間,只來得及答完一個,結束后一搜,答案特別多,也有很簡單的解法。

查漏補缺
**1.垃圾回收機制
JS的垃圾回收機制定期對我們不再使用的變量、對象所占用的內存進行釋放。局部變量正常生命周期中只在函數執行過程中存在,垃圾回收方式主要有兩種:
一種是標記清除法,當變量進入執行環境時標記為“進入變量”,當變量離開執行環境時標記為“離開環境”,被標記為“離開環境”的變量可以被回收;js中的垃圾收集器運行時會給存儲在內存中的所有變量都加上標記,然后去掉環境中的變量以及被環境中的變量引用的變量的標記,此后再被加上標記的變量被視為准備刪除的變量,最后垃圾收集器完成內存清除,銷毀帶標記的值並回收其占用的空間。
一種是引用計數法,統計引用類型變量聲明后被引用的次數,當次數為0時,該變量將被回收。本質是跟蹤記錄每個值被引用的次數。當聲明一個變量並將一個引用類型值賦給該變量時,這個值的引用次數為1;若同一個值又被賦值給另一個變量,則該值的引用次數+1,但如果包含這個值引用的變量又取得了另外一個值,則這個值得引用次數-1,當這個值的引用次數為0時,則無法再訪問這個值,就可回收其占用的內存空間。
V8引擎的垃圾回收機制,主要使用的是分代回收機制。
V8引擎將保存對象的堆進行了分代:對象最初被分在新生區,新生區的內存分配只需要保有一個指向內存區的指針,不斷根據內存大小進行遞增,當指針達到新生區的末尾,會有一次垃圾回收清理(小周期),清理掉新生區中不再活躍的死對象。對於超過2個小周期的對象,則需要將其移動至老生區。老生區在標記-清除或標記-緊縮的過程中進行回收。大周期進行並不頻繁,通常在移動足夠多的對象至老生區后才會發生。
**2.駝峰命名和下划線互換**

// 下划線轉換駝峰
function toHump(name) {
  return name.replace(/\_(\w)/g, function(all, letter){
    return letter.toUpperCase();
  })
}

 

// 駝峰轉下划線
function toLine(name){
  return name.replace(/([A-Z])/g, "_$1").toLowerCase();
}
```
為了避免首字母大寫帶來的下划線轉換,加一個slice()方法:
```
// 駝峰轉下划線
function toLine(name){
  return name.replace(/([A-Z])/g, "_$1").toLowerCase().slice(1);
}

 

// 測試
let a = 'a_b2_345_cd2345';
console.log(toHump(a));

let b = 'AbCdefGhi';
console.log(toLine(b));

 


**3.字母異位詞分組**

問題:

給定一個字符串數組,將字母異位詞組合在一起。字母異位詞指字母相同,但排列不同的字符串。

示例:

輸入: ["eat", "tea", "tan", "ate", "nat", "bat"],
輸出:
[
  ["ate","eat","tea"],
  ["nat","tan"],
  ["bat"]
]



說明:
所有輸入均為小寫字母。
不考慮答案輸出的順序。

/**
* @param {string[]} strs
* @return {string[][]}
*/
var groupAnagrams = function(strs) {
  let res = {};
  let len = strs.length;
  for(let i=0;i<len;i++){
    let s = strs[i].split('').sort().join('');
    if(!res[s]){
      res[s] = [];
    }
    res[s].push(strs[i])
  }
return Object.values(res);
};

 

通知面試
筆試很久通過復篩進入面試,郵件短信通知2天內電面,面試時間15分鍾,因為中間有個周末,實際過了四天,下午直接電話來面的。
自我感覺面的不好,因為最近半個月都沒怎么准備面試相關復習。主要問了以下幾個問題,都是知道一些,但是感覺沒講清楚,整個過程差不多有30分鍾。

面試題
1. vue數據驅動,講一下vue實現原理。
2. 講一下什么是虛擬DOM,虛擬DOM實現原理。
3. 數組去重幾種方式?
4. vue生命周期的created和mounted,mounted中是否得到數據,生命周期和數據哪個在先?沒太理解面試官意圖。
5. 小程序用到了雲數據庫,數據庫雙表聯查怎么實現?
6. 對webpack的了解?
7. 項目中遇到的問題,怎么解決?
8. 對工程化的理解?
9. 組件間通信有哪幾種方式?

 

二面
通過一面大概三四天吧,准備畢業論文最緊張的時候,真的是擠時間復習了一下,主要把之前遇到的不會的重點看了下。可能因為我沒有實習經歷,面試官反而問的比較簡單。然而,雖然面試體驗很棒(面試官很nice)但還是掛在二面了。最后給了我一些建議(我請求的),多看看常用的數組字符串高階函數,實習真正用的東西多了解下,提到我有吃沒實習的虧。因為面完又忙着改論文,到現在才寫二面面經,題目只記得一部分了。

面試題
1. CSS左定寬右自適應實現
2. CSS動畫
3. VUE生命周期(真的重要)
4. 數組常用高階函數filter、map這些
5. Promise實現


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM