1. 程式人生 > 其它 >軒轅展覽_數字化展廳設計中的高科技

軒轅展覽_數字化展廳設計中的高科技

模擬面試老師問到的面試題

1.冒泡和捕獲的差別

冒泡:從裡到外

捕獲:從外到裡

舉例:

div,body,html,doc

doc,html,body,div

2.繼承 extends

1.原型鏈繼承

function Parent1(){
  this.name='parent1'
  this.play=[1,2,3]
}

function Child1(){
  this.type='child2'
}

Child1.prototype=new Parent1()//重要
console.log(new Child1())

缺點:child和parent兩個例項使用的是同一個原型物件,他們的記憶體空間是共享的,一個發生改變,另一個也會改變,

2.建構函式繼承(藉助call)

function Patrnt1(){
   this.name='parent1'
}
Patrnt1.prototype.getname=function(){
return this.name
}
function Child1(){
Parent1.call(this)//重要
this.type='child1'
}

let child=new Child1()
log(child)
log(child.getname())//報錯

缺點:父類原型物件中一旦存在父類之前自己定義的方法,那麼子類將無法繼承這些方法。

只能繼承父類的例項屬性和方法,不能繼承原型屬性或者方法。

3.組合繼承

4.原型式繼承 Object.create 類似於淺拷貝

let parent4={
name:"amy"
friends["p1","p2"]
getname:function(){
return this.name}
}
let person4=object.creat(parent4)//重要
person4.name="tom"
person4.friends.push("jessy")

缺點:多個例項的引用型別屬性指向相同的記憶體,存在篡改的可能,

5.寄生式繼承

6.寄生組合式繼承

3.src與href

href:1用在link和a 2是為當前文件和引用建立練習 3瀏覽器解析:識別為css,並行下載資源並且不會停止對當前文件資源的載入

src;1用在sc,img上 2是替換當前的元素 3 停止其他資源的載入,直接將該資源下載完畢,編譯,執行

4.css位移

                transform:translate(水平位移,垂直位移);
				transform:translate(水平位移);
				
				transform:translateX(水平位移);
				transform:translateY(垂直位移);
				
				預設情況: 正值 從上往下,從左往右

5.12px改成1px

使用transform: scale();屬性縮放字型所在元素即可實現小字型顯示

6.引用資料型別和基本資料型別的區別

基本資料:bool int float double byte short long char

引用資料:陣列 字串

基本資料儲存在棧中,而引用資料型別只是地址儲存在棧中,具體內容儲存在堆中

7.表單事件

input select change invalid reset submit

8.!important

!important>行內樣式>id>class|屬性>標籤>萬用字元;

9.語義化標籤

h標籤 strong標籤 nav標籤 p標籤 ins del

具有可讀性,使得文件結構清晰

瀏覽器便於讀取,有利於優化,

利於團隊開發和維護,

使用者體驗好

10.h5新增特性

語義化標籤,增強型表單,新增表單元素,新增表單屬性,音訊、視訊,canvas,地理定位,拖拽,本地儲存,

11.css3新增語法

transtion animation transform 陰影 邊框 text-shadow

12.es6新增語法

1.新的變數宣告

let const

2箭頭函式

3解構賦值

可以將屬性/值從物件/陣列中取出,賦值給其他變數。

4...運算子

剩餘運算子 展開運算子

5模板字串

反引號 ¥{}

6模組

匯入import 匯出export

13.事件代理

事件代理又叫事件委託,利用的是事件冒泡,事件要繫結很多事件,可以繫結給他的祖先

14.js

15.渲染過程

1先解析html檔案,生成dom樹

2在解析css檔案,生成css規則樹

3將dom樹和css規則數結合,建立渲染樹

4根據渲染樹去佈局和繪製

16.非同步

非同步(Asynchronous, async)是與同步(Synchronous, sync)相對的概念。

程式碼不按照程式碼順序執行

17為什麼說js是單執行緒的

1程序:cpu分配資源的最小單位

2執行緒:cpu排程的最小單位

3瀏覽器是多程序的

沒開啟一個頁面,就是一個程序,所以瀏覽器是多程序的

4js是單執行緒的

js作為瀏覽器的指令碼語言,主要實現使用者和瀏覽器的互動以及操作dom,所以他只能是單執行緒的,舉個例子,假如js是多執行緒的,當一個執行緒要修改一個dom元素,一個執行緒要刪除這個dom元素,瀏覽器就會不知所措

18.新建dom節點

document.creatElement("div")
父元素.appendChild()

父元素.insertBefore(新節點,誰的前面)

父元素.removeChild()

19.防抖和節流

多次觸發只響應最後一次

多次觸發只響應其中幾次

20.重繪和迴流

影響元素的簡單樣式的改變,如顏色,字型等

影響元素的佈局的屬性,比如寬高

重繪不一定會引起迴流,迴流一定引起重繪

21.sass

SASS是一種CSS的開發工具

1 變數 以$開頭

$blue:#111

div{

color: $blue

}

2 選擇器巢狀 屬性也可以巢狀

div h1{
color:red
}

可以寫成

div{
   h1{
      color:red

}
}

border-color屬性可以寫成(冒號別漏掉)

p{
  border:{
  color:red
  }
}

3註釋 有三種

/**/ 保留在編譯後的檔案中

// 編譯後被省略

/*! 重要註釋 即使壓縮編譯 也會保留,通常用於版權資訊

4 繼承 允許一個選擇器繼承另一個選擇器 @extend

.class2{
@extends .classs1
}

5 定義一個程式碼塊 @mixin

使用@include命令 呼叫這個mixin

@mixin left{
float:left
margine-left:10px
}
div{
    @include left
}

6 插入檔案

@import命令,用來插入外部檔案。

7 @if

p{
    @if 1+1==2{color:red}
    @if5<3{color:blue}
}
@if lightness($color)>30%{
bgc:#000

}@else{
bgc:#fff

}

8 for迴圈 while迴圈 each

@for $i from 1to10{
   .border-#{$i}{
      border:#{$i}px solid blue
   }
}
$i 6;
@while $i>0{
.item-#{$i}{width:2em*$i;
$i:$i-2
}
}

9 自定義函式

@function double($n){
@return $n*2
}

22.this

1.方法呼叫,誰呼叫指向誰

2.函式呼叫 沒有明確指向 指向window

3.建構函式 指向被構造的物件

4.apply call bind 指向第一個引數

5.箭頭函式 指向上一層

6.嚴格模式下,沒有定義,指向undefined

23.作用域鏈

每一個函式執行的時候,會先在自己建立的ao上找對應的屬性值,找不到就往自己的父級的ao上面找,再找不到就再上一層的ao,知道找到最大的boss window

25.隔行變色

用 for迴圈,if判斷,偶數是一個色,奇數是一個色

26.transform

1translate(x,y)

transform:translate(5px,5px)

2scale(x,y)

transform:scale(0.8,1)

3rotate(deg)

transform:rotate(45deg)

4skew(deg,deg)

transform:skew(30deg,30deg)

5rotateX() rotateY() rotateZ()

transform:rotateX(180deg)

6 perspective

27.link與script區別

引入css樣式

引入js