css js基礎面試題


1.css選擇器

1 CSS選擇符有哪些
2  
3   通配符選擇器(*4   id選擇器(#classId)
5   類選擇器(.className)
6   標簽選擇器(div,h1,p,span,table)
7   子選擇器(ul > li)
8   后代選擇器(li a)
9   偽類選擇器(a:hover,li:nth-child)
 1 優先級權重計算
 2  important的權重為     1,0,0,0
 3   ID的權重為            0,1,0,0
 4   類的權重為             0,0,1,0
 5   偽類的權重為           0,0,1,0
 6   屬性的權重為           0,0,1,0
 7   標簽的權重為           0,0,0,1
 8   偽對象的權重為         0,0,0,1
 9   通配符的權重為         0,0,0,0
10  
11   就近原則,同權重情況下以樣式定義最近者為准;
12   載入樣式以最后載入的定位為准;
13   優先級:
14       //!important > id > class > tag
15       //important 比 內聯優先級高
16       important > 內聯樣式 > ID > 類 | 偽類 | 屬性選擇 > 標簽 | 偽元素 > 繼承 > 通配符

2.盒子模型

 

(1)是什么:每個元素被表示為一個矩形的盒子,由四部分組成:內容(content)、內邊距(padding)、邊框(border)、外邊距(margin)。它在頁面中所占的實際大小(寬高)是content+padding+border+margin之和。

(2)盒模型有兩種:標准盒模型(W3C盒模型)、IE盒模型。

 

(3)兩種盒模型的區別:標准盒模型內容大小就是content大小,而IE盒模型內容大小則是content+padding+border總的大小。

(4)怎么設置兩種盒模型:通過設置box-sizing屬性為content-box(默認值,標准盒模型)、border-box(IE盒模型)。

(5)JS怎么獲取和設置box的寬高

(6)box-sizing使用場景:若設置子元素的margin或border時可能會撐破父元素的尺寸,就需要使用box-sizing:border-box來將border包含進元素的尺寸中。
行內元素有哪些?塊級元素有哪些?
(1)行內元素:a,b,span,img,input,strong,label,button,select,textarea,em

(2)塊級元素:div,ul(無序列表),ol,li,dl(自定義列表),dt(自定義列表項),dd(自定義列表項的定義),p,h1-h6,blockquote(塊引用)

3.常用瀏覽器,內核

 

(1)Trident內核:(國產的絕大部分瀏覽器)IE,360,搜狗

 Gecko內核:Firefox,NetScape6及以上

 Presto內核:Opera7及以上

 Webkit內核:(國產大部分雙核瀏覽器其中一核)Safari(蘋果),Chrome

(2)瀏覽器內核:主要分成兩部分:渲染引擎和JS引擎。最開始渲染引擎和JS引擎並沒有區分的很明確,后來JS引擎越來越獨立,

內核就傾向於只指渲染引擎

(3)渲染引擎:負責取得網頁內容(HTML,XML,圖像等)、整理訊息(加入CSS等),以及計算網頁的顯示方式,后會輸出至

顯示器或打印機。

(4)JS引擎:解析和執行JavaScript來實現網頁的動態效果。

 

4.如何居中div?如何讓絕對定位的div居中?

 

 1 div:
 2 border: 1px solid red;
 3 margin: 0 auto; 
 4 height: 50px;
 5 width: 80px;
 6 
 7 絕對定位的左右居中:
 8 border: 1px solid black;
 9 position: absolute;
10 width: 200px;
11 height: 100px;
12 margin: 0 auto;
13 left: 0;
14 right: 0; 

 

 

 

 

5.如何檢查一個數字是否為整數?

 

1 function isInt(num) {
2  return num % 1 === 0;
3 }
4 console.log(isInt(4)); // true
5 console.log(isInt(12.2)); // false
6 console.log(isInt(0.3)); // false

 

6.js 字符串操作函數

 

 1 concat() – 將兩個或多個字符的文本組合起來,返回一個新的字符串。
 2 
 3 indexOf() – 返回字符串中一個子串第一處出現的索引。如果沒有匹配項,返回 -1 4 
 5 charAt() – 返回指定位置的字符。
 6 
 7 lastIndexOf() – 返回字符串中一個子串最后一處出現的索引,如果沒有匹配項,返回 -1 8 
 9 match() – 檢查一個字符串是否匹配一個正則表達式。
10 
11 substr() 函數 -- 返回從string的startPos位置,長度為length的字符串
12 
13 substring() – 返回字符串的一個子串。傳入參數是起始位置和結束位置。
14 
15 slice() – 提取字符串的一部分,並返回一個新字符串。
16 
17 replace() – 用來查找匹配一個正則表達式的字符串,然后使用新字符串代替匹配的字符串。
18 
19 search() – 執行一個正則表達式匹配查找。如果查找成功,返回字符串中匹配的索引值。否則返回 -120 
21 split() – 通過將字符串划分成子串,將一個字符串做成一個字符串數組。
22 
23 length – 返回字符串的長度,所謂字符串的長度是指其包含的字符的個數。
24 
25 toLowerCase() – 將整個字符串轉成小寫字母。
26 
27 toUpperCase() – 將整個字符串轉成大寫字母。

 

7.變量的作用域

 

1 1、函數內部可以讀取函數外部的全局變量;在函數外部無法讀取函數內的局部變量。
2 
3 2、函數內部聲明變量的時候,一定要使用var命令。如果不用的話,你實際上聲明了一個全局變量!
4 
5  5、使用閉包的注意點
6 
7 1)濫用閉包,會造成內存泄漏:由於閉包會使得函數中的變量都被保存在內存中,內存消耗很大,所以不能濫用閉包,否則會造成網頁的性能問題,在IE中可能導致內存泄露。解決方法是,在退出函數之前,將不使用的局部變量全部刪除。
8 
9 2)會改變父函數內部變量的值。所以,如果你把父函數當作對象(object)使用,把閉包當作它的公用方法(Public Method),把內部變量當作它的私有屬性(private value),這時一定要小心,不要隨便改變父函數內部變量的值。

 

8.null和undefined的區別 1 null是一個表示"無"的對象,轉為數值時為0;undefined是一個表示"無"的原始值,轉為數值時為NaN。

 2 
 3 當聲明的變量還未被初始化時,變量的默認值為undefined。 null用來表示尚未存在的對象  4 
 5 undefined表示"缺少值",就是此處應該有一個值,但是還沒有定義。典型用法是:  6 
 7 (1)變量被聲明了,但沒有賦值時,就等於undefined。  8 
 9 (2)調用函數時,應該提供的參數沒有提供,該參數等於undefined。 10 
11 (3)對象沒有賦值的屬性,該屬性的值為undefined。 12 
13 (4)函數沒有返回值時,默認返回undefined。 14 
15 null表示"沒有對象",即該處不應該有值。典型用法是: 16 
17 (1) 作為函數的參數,表示該函數的參數不是對象。 18 
19 (2) 作為對象原型鏈的終點

 

9. javascript語言特性中,有很多方面和我們接觸的其他編程語言不太一樣,請舉例
1 javascript語言實現繼承機制的核心就是 
2  1  (原型),而不是Java語言那樣的類式繼承。Javascript解析引擎在讀取一個Object的屬性的值時,會沿着 
3  2  (原型鏈)向上尋找,如果最終沒有找到,則該屬性值為 
4  3  undefined;如果最終找到該屬性的值,則返回結果。與這個過程不同的是,當javascript解析引擎執行“給一個Object的某個屬性賦值”的時候,如果當前Object存在該屬性,則改寫該屬性的值,如果當前的Object本身並不存在該屬性,則賦值該屬性的值。
 
        

 10.冒泡排序算法

 

 1 var array = [5, 4, 3, 2, 1];
 2 var temp = 0;
 3 for (var i = 0; i <array.length; i++){
 4 for (var j = 0; j <array.length - i; j++){
 5 if (array[j] > array[j + 1]){
 6 temp = array[j + 1];
 7 array[j + 1] = array[j];
 8 array[j] = temp;
 9  }
10 }
11 }

 

 

 

 
        

 

 

 


免責聲明!

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



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