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