第一:首先基本上是,基於你的簡歷進行初步的了解。
1:詢問我的github上的項目,是不是自己做的,怎么做的,問了一下那個九宮格游戲,那個是fork別人的,然后他問我自己有沒有研究?,那個項目有bug,我就實話實說,然后他問我哪里有bug,如何解決bug,問題出在哪里,,霹靂啪啦,霹靂啪啦。。。。。。。
2:看到我上面寫考了會計證,問我是不是有從事金融的打算,學習成績怎么樣?排名如何?這個金融的問題,真是沒想到,還以為他們要我去搞金融,原來擔心我方向不明確,我說,自己只是想擴展一下各方面的知識,多學點東西對自己總是好的,主要還是從事web前端開發,熱愛前端。。。。。。啥啥啥的。。。。
3:針對我的網頁簡歷,提出了一個非常好的問題,網頁簡歷用到了3d模型,從正面看的,問我如果從背面看會產生什么問題?因為我那個是用圖片渲染的,圖片上面加了文字,問我如果,不要圖片,只用文字,實現怎么搞?這個我知道,就霹靂啪啦,霹靂啪啦。。。。。。。的說了一堆。
4:問我對最新前沿的技術有沒有什么了解?比如說node.js,我只了解一點點,就說,對於現在的自己,目前太高深的問題不太適合,還是以基礎為主。。。。。啥啥啥的。
5:問到考研的問題?問我大三怎么不去考研?
6:問我,自己對學習前端有沒有什么規划,主要學習那些?前沿的技術是否了解?。。。。。啥啥啥的。。。。。。。。
7:問我阿里雲ECS是怎么弄的,備案怎么搞得,配置環境啊,,是不是都是自己搞得還是一起弄得?我都是自己一個人琢磨出來的。。霹靂啪啦,噼里啪啦。。我說了一堆,跟他講了一堆,。。,啥啥啥的。。。。。。
8:問我對於WEB UI有什么看法?扯到曾經實習軟件公司的經歷,在實習公司做了什么,用什么做的?
好吧!上面那些看似不夠高大上,其實還是很考驗一個人的反應能力的,說錯了話,結果就可想而知。。。。。感覺每個問題都在考驗我的反應能力。
第二:專業問題
1:如何檢測一個變量是字符串?如何檢測為對象類型呢?
1:使用typeOF檢測字符串
var str;
alert(typeOf str)
2:給測試變量加上一個空白字符,然后與測試變量做全等判斷,就可以得出這個變量是否是字符串。
<script type="text/javascript">
var str='ss';
var stt=str+'';
alert(str==stt); //輸出為真
</script
我只知道上面兩種,還有其它方法,麻煩給我留言哈!
1:typeof 可以判斷function的類型;在判斷除Object類型的對象時比較方便。
2:判斷已知對象類型的方法: instanceof
alert(c instanceof Array) ---------------> true
alert(d instanceof Date)
alert(f instanceof Function) ------------> true
alert(f instanceof function) ------------> false
注意:instanceof 后面一定要是對象類型,並且大小寫不能錯,該方法適合一些條件選擇或分支。
3:根據對象的constructor判斷: constructor alert(c.constructor === Array) ----------> true alert(d.constructor === Date) -----------> true alert(e.constructor === Function) -------> true 注意: constructor 在類繼承時會出錯 eg: function A(){}; function B(){}; A.prototype = new B(); //A繼承自B var aObj = new A(); alert(aobj.constructor === B) -----------> true; alert(aobj.constructor === A) -----------> false; 而instanceof方法不會出現該問題,對象直接繼承和間接繼承的都會報true: alert(aobj instanceof B) ----------------> true; alert(aobj instanceof B) ----------------> true; 言歸正傳,解決construtor的問題通常是讓對象的constructor手動指向自己: aobj.constructor = A; //將自己的類賦值給對象的constructor屬性 alert(aobj.constructor === A) -----------> true; alert(aobj.constructor === B) -----------> false; //基類不會報true了;
4:通用但很繁瑣的方法: prototype:
alert(Object.prototype.toString.call(a) === ‘[object String]’) -------> true;
alert(Object.prototype.toString.call(b) === ‘[object Number]’) -------> true;
alert(Object.prototype.toString.call(c) === ‘[object Array]’) -------> true;
alert(Object.prototype.toString.call(d) === ‘[object Date]’) -------> true;
alert(Object.prototype.toString.call(e) === ‘[object Function]’) -------> true;
alert(Object.prototype.toString.call(f) === ‘[object Function]’) -------> true;
大小寫不能寫錯,比較麻煩,但勝在通用。
比如:
<script type="text/javascript"> var str='123'; alert(Object.prototype.toString.call(str) === '[object String]'); //輸出為真 </script>
2:對於頁面加載緩慢,如何進行優化,解決途徑是什么?--這個我答的不好
我是先講頁面加載緩慢是那些原因造成的,比如:
A:后端的問題。
一般網頁第一個請求是動態請求的概率比較大,如果這個請求特別耗時,那肯定不是前端的責任。
B:請求過多
數一下瀑布圖總共有多少行,onload之前如果有幾百行,那么請求就太多了。一下子加載那么多資源造成擁擠。css,
js該合並的合並,圖標該精靈的精靈,使用字體圖標也很好。還有,有些不重要的東西不用放到onload之前加載,
放到后面也一樣。 網頁發請求數越少越好。
比如:HTML的話可以從script標簽這里說,比如動態加載script標簽,異步加載script標簽(IE:defer、標准:async)
C:某一個部分請求的時間花費過長。
請求比其他請求的時間大出一個數量級,這種情況一般是因為某一個資源太慢了,導致網頁整體變慢,資源慢的原因可能是:
a)資源在第三方站點上,他們很慢;
b)這個資源太大了;
c)這個 資源使用的域名有問題。
D:網絡問題
仔細看一下一個單獨的http請求,他們會分為好幾段,分別是域名解析、建立連接、發送請求、等待響應和接收數據幾個階段。
理論上域名解析和建立連接應該占用的時間很小才對,主要的時間應該用在后面幾個階段上。上圖中,淺灰色和灰色分別代表域名解析和建立連接。
可以看出這兩個請求中花費在網絡層上的時間太長了,超過總時間的一半還要多。網絡層時間過長除了可能和底層網絡有關之外,還可能和站點的服務端性能有關(后端RD的事情哦)。
當然,如果這種情況發生在向第三方站點發送的請求上(實際上也經常發生),建議取消或者更換某些站點功能從而避免這樣的請求了。
E:接收數據時間過長
上面說了,http請求的大部分時間應該花在后面幾個階段,比如等待響應和接收數據。但是,如果接收數據的時間太長了
長到數百毫秒甚至以秒計算的時候。那也是有問題的。這種情況一般是因為下載的內容太重了,例如大圖片、大腳本等。
這類問題可以使用GZIP壓縮、圖片壓縮或者JS/CSS的minify等 手段來解決。
還有像CSS Sprites,合並CSS文件等方案。



實現頁面部分緩存有 兩種機制:
第一種:對用戶控件進行緩存配置
此種是將頁面中需要緩存的部分置於用戶控件(.ascx文件)中,並且為用戶控件設置緩存功能
(包含用戶控件的ASP.NET頁面可設置也可不 設置緩存)。
這就是通常所說的“控件緩存”。
主要包括以下3種方法:
一:使用@ OutputCache指令以聲明方式為用戶控件設置緩存功能,
二:在代碼隱藏文件中使用PartialCachingAttribute類設置用戶控件 緩存;
三:使用ControlCachePolicy類以編程方式指定用戶控件緩存設置。
第二種:“緩存后替換”的方法。
該方法與控件緩存正好 相反,將頁面中的某一部分設置為不緩存,因此,盡管緩存了整個頁面,
但是當再次請求該頁時,將重新處理那些沒有設置為緩存的內容。