1. 程式人生 > >web前端開發工程師-面試題彙總

web前端開發工程師-面試題彙總

最近更新時間:2017年1月5日15:19:53

    已經參加工作(或實習)的同學都知道,在進入每一家公司之前,都需要經歷入職前的洗禮——面試。面試對於每一位技術人員來說都是一次挑戰,因為面試的難度深不可測,從技術發展的角度來說,深度和廣度都在不停的擴張,因此每一位技術人員都需要經常學習新的知識,以此來適應這個發展的社會。
    本篇博文是自己在面試過程中所遇到的面試題,藉助文字記錄的方式以便溫故知新。

1.用css實現三角形效果。


2.css樣式權重與樣式優先順序。

css樣式的權重規則:標籤名=1,class名=10,id名=100;可以根據選擇器的不同模式進行疊加;


css樣式優先順序原則:

第一,就近原則;!important > 內聯樣式 > id選擇器 > class選擇器 > 標籤選擇器

第二,最後載入原則;同權重的情況下,後出現的css樣式可以覆蓋先出現的css樣式;

3.陣列排序演算法。

4.物件陣列排序。

5.陣列去重方法

6.json字串與javascript物件的相互轉換"

(1)使用JavaScript內建函式JSON.parse()將字串轉換為JavaScript物件,

(2)使用JavaScript內建函式JSON.stringify()將JavaScript值轉換為JSON字串

7.jQuery物件和DOM物件的想互轉換

8.jQuery語法和JavaScript原生語法在宣告變數時,變數的命名規則有什麼區別

9.函式需求,對任意軟體的兩個版本號進行比較,返回較大的版本號。

    需求分析:
    java的jdk版本號:jdk1.7.0_02
    QQ 移動端的版本號:V6.5.3.410
    QQ PC端的版本號:11.2.01.3
    微信的版本號:WeChat 6.2.4
    boss直聘版本號:version 5.20
    可以看到,軟體版本號的組成方式有兩種:純數字 || 數字字母組合,要比較版本大小,只需要比較數字部分即可,演算法實現方式如下:

function versionCompare(v1,v2){
	var numIndex1,numIndex2,num1Str,num2Str,arr1,arr2,minLength,count=0;//定義需要用到的變數
	numIndex1 = v1.search(/\d/);//找到第一個數字出現的位置編號
	numIndex2 = v1.search(/\d/);
	num1Str = v1.slice(numIndex1);//提取版本號的所有數字
	num2Str = v2.slice(numIndex2);
	arr1 = num1Str.split(/[._]/);//將數字字串轉化為字串陣列,用.或_進行分割
	arr2 = num2Str.split(/[._]/);
	for(var i=0;i<arr1.length;i++){//將字串陣列,轉化為數字陣列
		arr1[i] = parseInt(arr1[i]);
	}
	for(var i=0;i<arr2.length;i++){//將字串陣列,轉化為數字陣列
		arr2[i] = parseInt(arr2[i]);
	}
	maxLength = arr1.length >= arr2.length ? arr1.length : arr2.length;//獲取較長的版本號
	if(arr1.length == arr2.length){//如果兩個版本號相等,函式終止執行,並且返回結果
		for(var i=0;i<maxLength;i++){
			if(arr1[i] == arr2[i]){
				count++;
				if(count == maxLength && arr1[maxLength-1] == arr2[maxLength-1]){
					return '版本號相同:' + v1
				}
			}
		}
	}
	for(var i=0;i<maxLength;i++){
		if(arr1[i] > arr2[i]){
			return v1;
		}else if(arr1[i] == arr2[i]){
			continue;
		}else if(arr1[i] === undefined){
			return v2;
		}else if(arr2[i] === undefined){
			return v1;
		}else{
			return v2;
		}
	}
}

10.判斷物件或變數是否為陣列

方案一:採用變數物件的建構函式去判斷

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.constructor.toString().indexOf("Array") !== -1;//true
console.log(fruits.constructor + ' ' + fruits.constructor.toString() + ' ' + fruits.constructor.toString().indexOf("Array"));//function Array() { [native code] } function Array() { [native code] } 9

console.log(typeof fruits.constructor + ' ' + typeof fruits.constructor.toString() + ' ' + typeof fruits.constructor.toString().indexOf("Array"));//function string number

方案二:instanceof操作符

fruits instanceof Array;//true

方案三:

fruits.constructor === Array;//true