本人大三,非985,211。javascript
參加了2015年暑假實習校園招聘,好吧,其實就看看題目長什麼樣字、廢話很少說,上題。css
一共13題,6個選擇,1題是github地址或博客微博地址,6個大題。html
選擇題第一題:前端
var arr = [1,2,3,4,5]; arr.splice(1,2,3,4,5); arr?
考察數組splice的用法。java
後面幾個選擇題忘了(別打臉),選擇題都不是很難。git
大題:github
1.考查css的基本知識,給出html基本代碼。寫css代碼, 每一個div是一個盒子模型。中間文字水平垂直居中,三個盒子水平排列。(比較基礎,代碼就不上了)算法
2.多維數組轉一位數組:原題:[1,[2,3]] ==》 [1,2,3]數組
var arr = [1,[[4,5,6],2,[[[7,8,9]]],3]]; //轉成一位數組:[1, 4, 5, 6, 2, 7, 8, 9, 3] function f(arr){ if(Object.prototype.toString.call(arr) != '[object Array]') //判斷arr是否是數組 return; var newArr = []; function fn(arr){ for (var i = 0; i < arr.length; i++) {//遍歷數組 if(arr[i].length){//判斷是否是多維數組 fn(arr[i]); //遞歸調用 }else{ newArr.push(arr[i]); } } } fn(arr); return newArr; } console.log(f(arr));
當時在作試卷的時候 沒有考慮多維數組,只片面的爲了解題,沒有用遞歸。markdown
更優作法:感謝 @ double Net
[1,[[4,5,6],2,[[[7,8,9]]],3]].toString().split(",")
3.數字類型轉千分位表示
var num = 123456789.9; //結果轉成千分位表示 123,456,789.9 function f(num){ if(typeof num != 'number') return; num += ''; if(num.indexOf('.')!=-1){ //判斷是否存在小數 return fn(num.split('.')[0])+'.'+num.split('.')[1]; }else{ return fn(num); } function fn(newNum){ var str = ''; var l = newNum.length; while(l>3){ str = ','+newNum.substring(l-3,l) + str; l = l-3; } str = newNum.substring(0,l) + str; return str; } } console.log(f(num));
4.解析url:var str = 'http://s.weibo.com/weibo/Aralic?topnav=1&wvr=6'得到參數名和參數值:
(之前作過相似的題目,解析url一系列的值,阿里這題感受稍微簡單一點)
在《javascript語言精粹》一書中看到使用正則 表達式 直接解析url,不過略難
function f(url){ var l = url.indexOf('?'); if(l!=-1){ var obj = {}; var arr = url.substring(l+1,url.length).split('&'); for(var i = 0; i<arr.length; i++){ obj[arr[i].split('=')[0]] = arr[i].split('=')[1]; } return obj; } } console.log(f('http://s.weibo.com/weibo/Aralic?topnav=1&wvr=6'))
有幸看到的園子大牛幫忙給點意見,不是專門學計算機的,算法比較差。
個人github博客:http://aralic.github.io/
對markdown更友好一點,排版也舒服一些。
雖然是作前端的,可是對本身博客的不知道爲何不想本身設計自定義樣式。