1. 程式人生 > >「前端面試」2018前端面試總結,看完弄懂,工資少說加3K

「前端面試」2018前端面試總結,看完弄懂,工資少說加3K

前端問題記錄

  1. HTML相關
  2. CSS相關
  3. JAVASCRIPT相關
  4. DOM相關
  5. HTTP相關
  6. VUE相關
  7. 演算法相關
  8. 網路安全相關
  9. webpack相關
  10. 其他

Html相關

1 html語義化

意義:根據內容的結構化(內容語義化),選擇合適的標籤(程式碼語義化)便於開發者閱讀和寫出更優雅的程式碼的同時讓瀏覽器的爬蟲和機器很好地解析。
注意:

  1. 儘可能少的使用無語義的標籤div和span;
  2. 在語義不明顯時,既可以使用div或者p時,儘量用p, 因為p在預設情況下有上下間距,對相容特殊終端有利;
  3. 不要使用純樣式標籤,如:b、font、u等,改用css設定。
  4. 需要強調的文字,可以包含在strong或者em標籤中(瀏覽器預設樣式,能用CSS指定就不用他們),strong預設樣式是加粗(不要用b),em是斜體(不用i);
  5. 使用表格時,標題要用caption,表頭用thead,主體部分用tbody包圍,尾部用tfoot包圍。表頭和一般單元格要區分開,表頭用th,單元格用td;
  6. 表單域要用fieldset標籤包起來,並用legend標籤說明表單的用途;
  7. 每個input標籤對應的說明文字都需要使用label標籤,並且通過為input設定id屬性,在lable標籤中設定for=someld來讓說明文字和相對應的input關聯起來。

新標籤:
h5新元素

2 meta viewport相關

<!DOCTYPE html>  H5標準宣告,使用 HTML5 doctype,不區分大小寫
<head lang=”en”> 標準的 lang 屬性寫法
<meta charset=’utf-8′>    宣告文件使用的字元編碼
<meta http-equiv=”X-UA-Compatible” content=”IE=edge,chrome=1″/>   優先使用 IE 最新版本和 Chrome
<meta name=”description” content=”不超過150個字元”/
>
頁面描述 <meta name=”keywords” content=””/> 頁面關鍵詞 <meta name=”author” content=”name, [email protected]/> 網頁作者 <meta name=”robots” content=”index,follow”/> 搜尋引擎抓取 <meta name=”viewport” content=”initial-scale=1, maximum-scale=3, minimum-scale=1, user-scalable=no”> 為移動裝置新增 viewport <meta name=”apple-mobile-web-app-title” content=”標題”> iOS 裝置 begin <meta name=”apple-mobile-web-app-capable” content=”yes”/> 新增到主屏後的標題(iOS 6 新增) 是否啟用 WebApp 全屏模式,刪除蘋果預設的工具欄和選單欄 <meta name=”apple-itunes-app” content=”app-id=myAppStoreID, affiliate-data=myAffiliateData, app-argument=myURL”> 新增智慧 App 廣告條 Smart App Banner(iOS 6* Safari) <meta name=”apple-mobile-web-app-status-bar-style” content=”black”/> <meta name=”format-detection” content=”telphone=no, email=no”/> 設定蘋果工具欄顏色 <meta name=”renderer” content=”webkit”> 啟用360瀏覽器的極速模式(webkit) <meta http-equiv=”X-UA-Compatible” content=”IE=edge”> 避免IE使用相容模式 <meta http-equiv=”Cache-Control” content=”no-siteapp” /> 不讓百度轉碼 <meta name=”HandheldFriendly” content=”true”> 針對手持裝置優化,主要是針對一些老的不識別viewport的瀏覽器,比如黑莓 <meta name=”MobileOptimized” content=”320″> 微軟的老式瀏覽器 <meta name=”screen-orientation” content=”portrait”> uc強制豎屏 <meta name=”x5-orientation” content=”portrait”> QQ強制豎屏 <meta name=”full-screen” content=”yes”> UC強制全屏 <meta name=”x5-fullscreen” content=”true”> QQ強制全屏 <meta name=”browsermode” content=”application”> UC應用模式 <meta name=”x5-page-mode” content=”app”> QQ應用模式 <meta name=”msapplication-tap-highlight” content=”no”> windows phone 點選無高光 設定頁面不快取 <meta http-equiv=”pragma” content=”no-cache”> <meta http-equiv=”cache-control” content=”no-cache”> <meta http-equiv=”expires” content=”0″>

3 canvas 相關

使用前需要獲得上下文環境,暫不支援3d
常用api:
  1.fillRect(x,y,width,height)實心矩形
  2.strokeRect(x,y,width,height)空心矩形
  3.fillText("Hello world",200,200);實心文字
    4.strokeText("Hello world",200,300)空心文字
各種東西!!!

新標籤相容低版本

  1. ie9之前版本通過createElement建立html5新標籤
  2. 引入html5shiv.js

CSS相關

1.盒模型

  1. ie盒模型算上border、padding及自身(不算margin),標準的只算上自身窗體的大小
    css設定方法如下
/* 標準模型 */
box-sizing:content-box;
 /*IE模型*/
box-sizing:border-box;
  1. margin、border、padding、content由外到裡

  2. 幾種獲得寬高的方式

  • dom.style.width/height
    這種方式只能取到dom元素內聯樣式所設定的寬高,也就是說如果該節點的樣式是在style標籤中或外聯的CSS檔案中設定的話,通過這種方法是獲取不到dom的寬高的。
  • dom.currentStyle.width/height
    這種方式獲取的是在頁面渲染完成後的結果,就是說不管是哪種方式設定的樣式,都能獲取到。但這種方式只有IE瀏覽器支援。
  • window.getComputedStyle(dom).width/height
    這種方式的原理和2是一樣的,這個可以相容更多的瀏覽器,通用性好一些。
  • dom.getBoundingClientRect().width/height
    這種方式是根據元素在視窗中的絕對位置來獲取寬高的
  • dom.offsetWidth/offsetHeight
    這個就沒什麼好說的了,最常用的,也是相容最好的。
  1. 拓展 各種獲得寬高的方式
  • 獲取螢幕的高度和寬度(螢幕解析度):window.screen.height/width
  • 獲取螢幕工作區域的高度和寬度(去掉狀態列):window.screen.availHeight/availWidth
  • 網頁全文的高度和寬度:document.body.scrollHeight/Width
  • 滾動條捲上去的高度和向右卷的寬度:document.body.scrollTop/scrollLeft
  • 網頁可見區域的高度和寬度(不加邊線):document.body.clientHeight/clientWidth
  • 網頁可見區域的高度和寬度(加邊線):document.body.offsetHeight/offsetWidth
  1. 邊距重疊解決方案(BFC)
    BFC原理
  • 內部的box會在垂直方向,一個接一個的放置
    每個元素的margin box的左邊,與包含塊border box的左邊相接觸(對於從做往右的格式化,否則相反)
  • box垂直方向的距離由margin決定,屬於同一個bfc的兩個相鄰box的margin會發生重疊
  • bfc的區域不會與浮動區域的box重疊
  • bfc是一個頁面上的獨立的容器,外面的元素不會影響bfc裡的元素,反過來,裡面的也不會影響外面的
  • 計算bfc高度的時候,浮動元素也會參與計算
    建立bfc
  • float屬性不為none(脫離文件流)
  • position為absolute或fixed
  • display為inline-block,table-cell,table-caption,flex,inine-flex
  • overflow不為visible
  • 根元素

demo

<section class="top">
  <h1></h1>
  這塊margin-bottom:30px;
</section>
<!-- 給下面這個塊新增一個父元素,在父元素上建立bfc -->
< style="overflow:hidden">
  <section class="bottom">
  <h1></h1>
  這塊margin-top:50px;
  </section>
</h2>

css reset 和 normalize.css 有什麼區別

  • 兩者都是通過重置樣式,保持瀏覽器樣式的一致性
  • 前者幾乎為所有標籤添加了樣式,後者保持了許多瀏覽器樣式,保持儘可能的一致
  • 後者修復了常見的桌面端和移動端瀏覽器的bug:包含了HTML5元素的顯示設定、預格式化文字的font-size問題、在IE9中SVG的溢位、許多出現在各瀏覽器和作業系統中的與表單相關的bug。
  • 前者中含有大段的繼承鏈
  • 後者模組化,文件較前者來說豐富

居中方法

水平方向上

針對inline, 內聯塊inline-block, 內聯表inline-table, inline-flex元素及img,span,button等元素
.text_div{
  text-align:center;
}
不定寬塊狀元素居中
.text_div{
    margin:0 auto;
}

通過給父元素設定 float,然後給父元素設定 position:relative 和 left:50%,子元素設定 position:relative 和 left: -50% 來實現水平居中。
.wrap{
    float:left;
    position:relative;
    left:50%;
    clear:both;
}
.wrap-center{
    left:-50%;
}

垂直居中

單行內聯(inline-)元素垂直居中
通過設定內聯元素的高度(height)和行高(line-height)相等,從而使元素垂直居中。

.text_div{
    height: 120px;
    line-height: 120px;
}
利用表佈局
.father {
    display: table;
}
.children {
    display: table-cell;
    vertical-align: middle;
}
flex佈局
.center-flex {
    display: flex;
    flex-direction: column;//上下排列
    justify-content: center;
}
絕對佈局方式
已知高度
.parent {
  position: relative;
}
.child {
  position: absolute;
  top: 50%;
  height: 100px;
  margin-top: -50px;
}
未知高度
.parent {
    position: relative;
}
.child {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
}

垂直水平居中根據上方結合

flex方式
.parent {
    display: flex;
    justify-content: center;
    align-items: center;
}
grid方式
.parent {
  height: 140px;
  display: grid;
}
.child {
  margin: auto;
}

css優先順序確定

  • 每個選擇器都有權值,權值越大越優先
  • 繼承的樣式優先順序低於自身指定樣式
  • !important優先順序最高 js也無法修改
  • 權值相同時,靠近元素的樣式優先順序高 順序為內聯樣式表(標籤內部)> 內部樣式表(當前檔案中)> 外部樣式表(外部檔案中)

bfc內容見盒模型

如何清除浮動

不清楚浮動會發生高度塌陷:浮動元素父元素高度自適應(父元素不寫高度時,子元素寫了浮動後,父元素會發生高度塌陷)

  • clear清除浮動(新增空div法)在浮動元素下方新增空div,並給該元素寫css樣式: {clear:both;height:0;overflow:hidden;}
  • 給浮動元素父級設定高度
  • 父級同時浮動(需要給父級同級元素新增浮動)
  • 父級設定成inline-block,其margin: 0 auto居中方式失效
  • 利用br標籤的clear屬性
  • 給父級新增overflow:hidden 清除浮動方法
  • 萬能清除法 after偽類 清浮動(現在主流方法,推薦使用)
.float_div:after{
  content:".";
  clear:both;
  display:block;
  height:0;
  overflow:hidden;
  visibility:hidden;
}
.float_div{
  zoom:1
}

自適應佈局

思路:

  1. 左側浮動或者絕對定位,然後右側margin撐開
  2. 使用div包含,然後靠負margin形成bfc
  3. 使用flex

畫三角形

#item {
  width: 0;
  height: 0;
  border-left: 50px solid transparent;
  border-right: 50px solid transparent;
  border-top: 50px solid transparent;
  border-bottom: 50px solid blue;
  background: white;
}

link @import匯入css

  1. link是XHTML標籤,除了載入CSS外,還可以定義RSS等其他事務;@import屬於CSS範疇,只能載入CSS。
  2. link引用CSS時,在頁面載入時同時載入;@import需要頁面網頁完全載入以後載入。
  3. link無相容問題;@import是在CSS2.1提出的,低版本的瀏覽器不支援。
  4. ink支援使用Javascript控制DOM去改變樣式;而@import不支援。

animation

長寬比方案

  1. 使用padding方式結合calc實現
  2. 長寬一項設定百分比另一項aspect-ratio實現(需藉助外掛實現)

display相關

  1. block: div等容器型別
  2. inline:img span等行內型別
  3. table系列:將樣式變成table型別
  4. flex:重點把握,非常強大
  5. grid:同上
  6. inline-block:可設定寬度,兩者間有一點間隙
  7. inherit:繼承父級

JavaScript相關

### 1 ["1", "2", "3"].map(parseInt) ```javascript 首先, map接受兩個引數, 一個回撥函式 callback, 一個回撥函式的this值

其中回撥函式接受三個引數 currentValue, index, arrary;

而題目中, map只傳入了回撥函式–parseInt.

其次, parseInt 只接受兩個兩個引數 string, radix(基數).
本題理解來說也就是key與 index

所以本題即問
parseInt(‘1’, 0);
parseInt(‘2’, 1);
parseInt(‘3’, 2);

parseInt(string, radix)
string 必需。要被解析的字串。
radix 可選。表示要解析的數字的基數。該值介於 2 ~ 36 之間。
如果省略該引數或其值為 0,則數字將以 10 為基礎來解析。如果它以 “0x” 或 “0X” 開頭,將以 16 為基數。

### 2 [[3,2,1].reduce(Math.pow), [].reduce(Math.pow)]
```javascript
arr.reduce(callback[, initialValue])
reduce接受兩個引數, 一個回撥, 一個初始值.
回撥函式接受四個引數 previousValue, currentValue, currentIndex, array
需要注意的是 If the array is empty and no initialValue was provided, TypeError would be thrown.
所以第二個表示式會報異常. 第一個表示式等價於 Math.pow(3, 2) => 9; Math.pow(9, 1) =>9

3

var ary = [0,1,2];
ary[10] = 10;
ary.filter(function(x) { return x === undefined;});
我們看到在迭代這個陣列的時候, 首先檢查了這個索引值是不是陣列的一個屬性, 那麼我們測試一下.

0 in ary; => true
3 in ary; => false
10 in ary; => true
也就是說 從 3 - 9 都是沒有初始化的bug !, 這些索引並不存在與陣列中. 在 array 的函式呼叫的時候是會跳過這些坑的.

4 [typeof null, null instanceof Object]

typeof 返回一個表示型別的字串.
instanceof 運算子用來檢測 constructor.prototype 是否存在於引數 object 的原型鏈上.
type         result
Undefined   "undefined"
Null        "object"
Boolean     "boolean"
Number      "number"
String      "string"
Symbol      "symbol"
Host object Implementation-dependent
Function    "function"
Object      "object"

5 js資料型別

  • number;

  • string;

  • boolean;

  • undefined;

  • null;

  • symbol(ES6新增,文章後面有對著新型別的解釋)Symbol 生成一個全域性唯一的值。

  • Object.(包括Object,Array,Function)

6 promise 用法

定義
var promise = new Promise(function(resolve, reject) {
  // ... some code
  if (/* 非同步操作成功 */){
    resolve(value);
  } else {
    reject(error);
  }
});
使用
promise.then(function(value) {
  // success
}, function(error) {
  // failure
});
//等價於:
promise.then(function(){
  //success
}).catch(function(){
  //failure
})

7 es6 promise ajax

定義
const myHttpClient = url => {
  return new Promise((resolve, reject) => {
    let client = new XMLHttpRequest();
    client.open("GET", url);
    client.onreadystatechange = handler;
    client.responseType = "json";
    client.setRequestHeader("Accept", "application/json");
    client.send();
    function handler() {
      if (this.readyState !== 4) {
        return;
      }
      if (this.status === 200) {
        resolve(this.response);
      } else {
        reject(new Error(this.statusText));
      }
    }
  });
};
使用
myHttpClient('https://www.baidu.com').then(res => {
  console.log(res);
}).catch(error => {
  console.log(error);
});

8閉包

function foo(x) {
    var tmp = 3;
    return function (y) {
        alert(x * y * (++tmp));
    }
}
var bar = foo(2); // bar 現在是一個閉包
bar(10);
結果是16
es6通常用let const塊級作用域代替,
閉包缺點,ie中會引起記憶體洩漏,嚴格來說是ie的缺點不是閉包的問題

9 什麼是立即執行函式?使用立即執行函式的目的是什麼?

常見兩種方式
1.(function(){...})()
  (function(x){
    console.log(x);
  })(12345)
2.(function(){...}())
  (function(x){
    console.log(x);
  }(12345))
作用 不破壞汙染全域性的名稱空間,若需要使用,將其用變數傳入如
(function(window){...}(window)

10 async/await 語法

作用:非同步程式碼的新方式
promise示例
const makeRequest = () => {
  return getJSON()
    .then(data => {
      if (data.needsAnotherRequest) {
        return makeAnotherRequest(data)
          .then(moreData => {
            console.log(moreData)
            return moreData
          })
      } else {
        console.log(data)
        return data
      }
    })
}
async/await示例
const makeRequest = async () => {
  const data = await getJSON()
  if (data.needsAnotherRequest) {
    const moreData = await makeAnotherRequest(data);
    console.log(moreData)
    return moreData
  } else {
    console.log(data)
    return data
  }
}
函式前面多了一個aync關鍵字。await關鍵字只能用在aync定義的函式內。async函式會隱式地返回一個promise,該promise的reosolve值就是函式return的值。(示例中reosolve值就是字串"done")

11 深淺拷貝

let a = {
  aa: 1,
  bb: 2,
  cc: 3,
  dd: {
    ee: 5,
  },
  ff: {
    gg: 6,
  }
};
let d = JSON.parse(JSON.stringify(a));//深複製包含子物件
let c = {...a};//深拷貝單不包含子物件
let b = a;//淺拷貝
b.bb = 22;
c.cc = 33;
c.dd.ee = 55;
d.ff.gg = 66;
console.log(a);
console.log(b);
console.log(c);
console.log(d);

12陣列去重

思路1:定義一個新陣列,並存放原陣列的第一個元素,然後將元素組一一和新陣列的元素對比,若不同則存放在新陣列中
思路2:先將原陣列排序,在與相鄰的進行比較,如果不同則存入新陣列。
思路3:利用物件屬性存在的特性,如果沒有該屬性則存入新陣列。
思路4(最常用):使用es6 set
let arr= [1, 2, 3, 3, 5, 7, 2, 6, 8];
console.log([...new Set(arr)]);

13正則實現trim()功能

function myTrim(str) {
  let reg = /^\s+|\s+$/g;
  return str.replace(reg, "");
}
console.log(myTrim('    asdf    ')
            
           

相關推薦

前端面試2018前端面試總結工資3K

前端問題記錄 HTML相關 CSS相關 JAVASCRIPT相關 DOM相關 HTTP相關 VUE相關 演算法相關 網路安全相關 webpack相關 其他 Html相關 1 html語義化 意義:根據內

前端資訊剛上線的阿里達摩院官網前端角度圈點之處

寫在前面: 從去年十月份,馬雲成立阿里巴巴達摩院,到今年9月28號一年整,阿里達摩院官網正式上線。作為從事網際網路行業的人,大抵都是會去達摩院官網看看的,本文即我個人從前端角度對達摩院官網,進行的一次簡單粗暴的測評,細數圈點之處,並提取一些作為前端可以值得借鑑和思考的程式碼技巧。第一次寫

前端諮詢剛上線的阿里達摩院官網前端角度圈點之處

寫在前面: 從去年十月份,馬雲成立阿里巴巴達摩院,到今年9月28號一年整,阿里達摩院官網正式上線。作為從事網際網路行業的人,大抵都是會去達摩院官網看看的,本文即我個人從前端角度對達摩院官網,進行的一次簡單粗暴的測評,細數圈點之處,並提取一些作為前端可以值得借鑑和

力薦超級大牛總結的Java架構師提升路徑不要錯過!

可以說,Java是現階段中國網際網路公司中,覆蓋度最廣的研發語言,掌握了Java技術體系,不管在成熟的大公司,快速發展的公司,還是創業階段的公司,都能有立足之地。 成為Java架構師,需要掌握哪些技能呢?這裡有一份對標百度T7阿里P8的Java架構師必知必會課程,《JavaEE企業

賬號分享2018年11月最新美國區Apple ID蘋果賬號分享

現在想要在網路上面找到一個能正常下載app的海外蘋果賬號已經非常困難了. 我今天剛申請了一個美國apple id賬號,免費分享給大家使用! 美國區apple id賬號 賬號:[email protected] 密碼:Ww112211 友情提醒: 文明使

效能優化首屏時間從12.67s到1.06s我是如何做到的?

——本文是對之前同名文章的修正,將所有webpack3的內容更新為webpack4,以及加入了筆者近期在公司工作中學習到的自動化思想,對文章內容作了進一步提升。 0.引言 作為網際網路專案,最重要的便是使用者體驗。在舉國“網際網路+”的熱潮中,使用者至上也已經被大多數企業所接收

珍藏老司機為你推薦10個炫酷的開源庫的人都收藏了

前言 技術群裡面經常有人問到一些炫酷的UI效果實現方法,有時候我都是給一個相同或者相似效果的Github連結,有同學私信給我說,大佬,怎麼這些效果你都能找到?你是怎麼搜尋的,或者有其他什麼祕方?會利用Google、百度等搜尋工具搜尋是一方面,另一個重要的方面是:記錄蒐藏,當看到一個炫酷的效果的時候,記得

在行動重點關注!綠色應用2.0標準釋出超過半數應用存在許可權過度獲取問題

相信很多安卓使用者都有這樣的體驗,安裝應用的時候各種許可權申請讓自己眼花繚亂,不耐心的可能一股腦都點同意了,耐心的可能會一項一項看,拒絕一些敏感許可權,比如位置資訊,讀取聯絡人之類的,避免自己的隱私被洩露。隨著安卓綠色聯盟應用體驗標準2.0的釋出,使用者的這個煩惱將會得到改善。 近日,華為

史上最全 40 道 Dubbo 面試題及答案碾壓面試官!

想往高處走,怎麼能不懂 Dubbo? Dubbo是國內最出名的分散式服務框架,也是 Java 程式設計師必備的必會的框架之一。Dubbo 更是中高階面試過程中經常會問的技術,無論你是否用過,你都必須熟悉。 下面我為大家準備了一些 Dubbo 常見的的面試題,一些是我經常問

現在做前端的人那麼多好的前端工資到底有多高了這個圖當場說不出話!

首先,現在軟體行業發展趨勢,其次,一個軟體都快飽和的年代,人們的要求不再只是停留在功能上,更多的是體驗感,不只停留在html,更加追求在css,js上的效果和效能。所以:首當其衝的是樣貌——前端。在這裡我還是要推薦下我自己建的web前端開發學習群:617327703,群裡都是

如果你正在學前端請謹記10年老程式設計師這3條忠告我懵逼了

點選上方藍色字型【學習web前端】可【快速關注】2018年各大網際網路公司對前端技術人才的需求缺

WEB前端開發的思考與感悟這篇文章你再考慮是否入坑!

擁有 適配 多人 理解 公司 鍛煉 適合 web前端開發 一段 最近幾年對於web前端的傳聞很多,比如人才稀缺,簡單易學,待遇豐厚,整體勢頭發展良好等等。遇到過一個不太熟搞後臺開發的同事跑來問我學習前端需要掌握哪些內容,也聽說過一個搞IOS開發準備自學前端半個月然後要去找前

HashMap 底層實現原理面試不再懵逼。

前言: HashMap是在面試中經常會問的一點,很多時候我們僅僅只是知道HashMap他是允許鍵值對都是Null,並且是非執行緒

面試問爛的 MySQL 四種隔離級別吊打面試官!

什麼是事務 事務是應用程式中一系列嚴密的操作,所有操作必須成功完成,否則在每個操作中所作的所有更改都會被撤消。也就是事務具

微信H5支付這個你一定就了【前端

一、說在前面的話 1.微信H5支付一定要開通,沒開通就別扯淡了,它和APP支付不是一個 2.微信支付後臺一定要配置js安全域

機器學習 | 詳解GBDT梯度提升樹原理再也不怕面試

本文始發於個人公眾號:TechFlow,原創不易,求個關注 今天是機器學習專題的第30篇文章,我們今天來聊一個機器學習時代可以說是最厲害的模型——GBDT。 雖然文無第一武無第二,在機器學習領域並沒有什麼最厲害的模型這一說。但在深度學習興起和流行之前,GBDT的確是公認效果最出色的幾個模型之一。雖然現在

聽我的這30道MySQL基礎題再去面試

> 可以微信搜尋公眾號「 後端技術學堂 」回覆「1024」獲取50本計算機電子書,回覆「進群」拉你進讀者技術交流群,文章每週持續更新,我們下期見! 一個典型的網際網路產品架構包含接入層、邏輯處理層以及儲存層,其中儲存層承載著資料落地和持久化的任務,同時給邏輯處理層提供資料查詢功能支援。說到儲存層就要說到資料

面試不再慌這篇保證讓你寫HashMap跟玩一樣

今天這篇文章給大家講講hashmap,這個號稱是所有Java工程師都會的資料結構。為什麼說是所有Java工程師都會呢,因為很簡單,他們不會這個找不到工作。幾乎所有面試都會問,基本上已經成了標配了。 在今天的這篇文章當中我們會揭開很多謎團。比如,為什麼hashmap的get和put操作的複雜度是 ,甚至比紅黑樹

這篇再也不怕面試官問我執行緒池了

![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20201129220549759.png) ## 一、為什麼需要執行緒池 在實際使用中,執行緒是很佔用系統資源的,如果對執行緒管理不完善的話很容易導致系統問題。因此,在大多數併發框架中都會使用執行緒池來管理執行緒,使用執行緒

【軟體測試 Python自動化】全網最全大廠面試題以後你就是面試官!

前言 為了讓大家更好的理解和學習投入到Python自動化來找到一份好的資料也是學習過程中,非常重要的一個點。你的檢索能力越強,你就會越容易找到最合適你的資料。 有需要的小夥伴可以複製群號 313782132 這裡可免費領取! 暗號:部落格。 一、什麼是相容性測試?相容性測試側重哪些方面? 參考答案: