總結一下面試中的知識點


    不得不承認,這次的面試官,我覺得都挺好,上午面試YY公司的面試官,態度親和力都很nice,說話務實,三個人一起面我(我還是第一次被三個人同時面,囧囧囧)。對於下午面試的XX公司,面試官目前是我最欣賞的一位,實在,嚴謹,修養很好,看的出來是位經驗豐富的大牛,為他不折不扣的追問細節而折服。說出來的思路沒用,寫代碼寫出來才是王道(所以,草稿紙都寫滿了),本來就煩手寫代碼,所以,關於一些選擇器命名之類很隨便,然而面試官很注重細節,給我指定名稱,規范格式,為我的不端正態度內疚,追問細節的過程中,確實學到不少東西。至少之前沒有引起重視,或者說,用到的很少的知識點,都被追問到,看來基礎知識還是有待加強。這里把面試過程中的問題總結一下。

 一:先來看道js筆試題

    貌似我寫錯了,把參數誤漏了。囧

var x=1;
var y=1;
method(8);
alert(x+y);-后輸出5
function  method(y)
{
   x+=3;        x為全局變量
   y+=3;        參數y,這里僅僅是局部變量
   alert(x+y);--先輸出15
} 

  考察知識點:函數聲明的方式,對於這種,先調用后聲明的形式,在js世不報錯的,但是如果是匿名函數將會報錯,原因是匿名函數沒有給出具體

的函數名js無法識別。在js里,聲明有三種。

方式一:

var  text;
var  text=4;

這種方式,聲明的是全局變量,如果包裹在function里面,則為局部變量。

方式二:

text=4;

這種隱式的聲明一個變量,沒有給var,表示為全局變量,即使在function里面,也為全局變量。

方式三:

window.text;
window.text=4;

這種方式,經常用到一個匿名函數執行后將一些函數公開到全局。

全局變量的好處:可以減少變量的個數,減少由於實際參數和形式參數的數據傳遞帶來的時間消耗。

              壞處:占用內存單元,破壞了函數封裝性,代碼可讀性降低。

二:寫了一道編程題,比較簡單,直接貼碼。忘記了,大概是這樣的

var  oUl=document.getElementById("list");
var  oLi=oUl.getElementsByTagName("li");
for(var  i=0;i<oLi.length;i++)
{
  oLi[i].index=i;
  oLi[i].onclick=function()
  {
    alert(this.index);
  }
    
}

三:css中布局寬度,margin,padding的真實高度。

      這個說實話,之前真沒注意,好細節的說啊!

先來看看代碼,:

 <div class="test1"  id="test1">test1</div>  
 <div class="test2"  id="test2">  
      <div class="test2_son">test2_son</div>  
 </div>  

css部分:

 body{  
                margin:0px;  
            }  
  
            .test1{  
                width:150px;  
                height:150px;  
                border:6px solid red;  
            }  
  
            .test2{  
                margin-top:40px;  
                padding-top:40px;  
                width:150px;  
                height:150px;  
                border:6px solid gray;  
            }  
  
            .test2_son{  
                width:80px;  
                height:50px;  
                border:12px solid blue;  
            }  

那么如何檢測該div的真實高度和寬度呢?先來看下盒模型的分布圖

js代碼獲取它的實際寬度和高度如下所示:

var  test1=document.getElementById("test1");
alert(test1.offsetHeight);   --彈出162px=div實際高度+border-top的高度+border-bottom的高度
var  test2=document.getElementById("test2");
alert(test2.offsetHeight);   --彈出202px=div實際高度+border-top的高度+border-bottom的高度+padding的高度

     所以,div的實際高度和寬度,主要包括padding+border+本身的div高/寬。

     注:margin可為負數,padding不能為負數

    之后老師拋起box-sizing的尺寸大小問題,這個我不是很清楚,回來查資料,這里總結一下。

 四:box-sizing的問題

         box-sizing 屬性允許您以特定的方式定義匹配某個區域的特定元素。包括border-box|content-box(默認)|padding-box

    先來看下代碼,比較一下它們之間的區別:

<div  class="content-box"></div>
<div  class="padding-box"></div>
<div  class="border-box"></div>

css部分:

  .content-box{
        box-sizing:content-box;
        -moz-box-sizing:content-box;
        width: 100px;
        height: 100px;
        padding: 20px;
        border: 5px solid #E6A43F;
        background: blue;
    }
    .padding-box{
        box-sizing:padding-box;
        -moz-box-sizing:padding-box;
        width: 100px;
        height: 100px;
        padding: 20px;
        border: 5px solid #E6A43F;
        background: red;                
    }
    .border-box{
        box-sizing:border-box;
        -moz-box-sizing:border-box;
        width: 100px;
        height: 100px;
        padding: 20px;
        border: 5px solid #E6A43F;
        background: yellow;
    }

實現效果如下:

現在我們來看下區別:

  上面的三張圖,第一張width=150px;第二張為110px;第三張為100px,都包括border的寬度10px在內。

  content-box:border和padding都計算入width之內,即width=100+20*2+10=150px;

  會發現一個很奇怪的問題,此時的width明明只有100px.為什么在瀏覽器屏幕上顯示的變為了140px?

  其實是因為padding的作用,它的width包括padding,所以我們看到的比100px大,而在正常的非box-sizing里面,即使設置了padding值

它依然只能顯示出100px.

  padding-box:border計算入width內,即屏幕上顯示的width為:100px+5*2=110px;

  border-box:border和padding的值都不計算在width之內.即顯示width=100px;

  ie8+瀏覽器支持content-box和border-box;ff則支持全部三個值。

這里,我們在js代碼里面,看一下它的實際寬度,也是相對應的。

var  contentBox=document.getElementById("content-box");
var  paddingBox=document.getElementById("padding-box");
var  borderBox=document.getElementById("border-box");
alert(contentBox.offsetWidth);  --彈出150px
alert(paddingBox.offsetWidth);  --彈出110px
alert(borderBox.offsetWidth);   --彈出100px

 簡單來說,box-sizing與我們平時的盒模型最大的區別就是,在瀏覽器屏幕上顯示的寬度不一樣。

五:git中涉及到的一些命令

      列舉了一些經常用的命令,但有幾個不常用的搞忘記了,關於git常見命令可參考廖雪峰老師的文檔。

      http://www.liaoxuefeng.com/的git教程。

六:關於塊級元素和行級元素

     塊級元素:div  , p  , form,   ul,  li ,  ol, dl,    form,   address,  fieldset,  hr, menu,  table  (p是塊級元素)

     行內元素:span,   strong,   em,  br,  img ,  input,  label,  select,  textarea,  cite
     區別:
      1)塊級元素會獨占一行,其寬度自動填滿其父元素寬度
          行內元素不會獨占一行,相鄰的行內元素會排列在同一行里,直到一行排不下,才會換行,其寬度隨元素的內容而變化
      2) 塊級元素可以設置 width, height屬性,行內元素設置width,  height無效。
         【注意:塊級元素即使設置了寬度,仍然是獨占一行的】
      3) 塊級元素可以設置margin 和 padding。行內元素的水平方向的padding-left,padding-right,margin-left,margin-right 都產生邊距效果
但是豎直方向的padding-top,padding-bottom,margin-top,margin-bottom都不會產生邊 距效果。(水平方向有效,豎直方向無效)
      面試官拋出一個問題,如何使塊級元素和行級元素在同一行?
      解決辦法:給塊級元素加display:inline-block,看下代碼:
<div  class="div1">
    <div  class="div2">4444</div>
    <span  class="span">222</span>
</div>

    css部分:

.div1{border:1px  solid red;}
.div2{border:1px  solid  blue;}
.span{border:1px  solid  green;}

實現效果如下:

可以看出,此時塊級元素div獨占一行,而行級元素span,在下面一行,只占據本身的寬度。

如果加上display:inline-block,則可使塊級元素和行級元素在同一行。

.div1{border:1px  solid red;}
.div2{border:1px  solid  blue;display:inline-block}
.span{border:1px  solid  green;}

效果如下:

 延伸拓展下:如果要要使兩個行內元素在同一行,應該怎么寫?
解決辦法:給行內元素加vertical-align:middle   具體的可參考我這篇文章: http://www.cnblogs.com/jtjds/articles/5449454.html
 
七:關於字符串問題
      

注意兩者的區別。

   

參考文章:http://blog.csdn.net/freshlover/article/details/19034079

              http://www.cnblogs.com/Candybunny/p/5627905.html

   
parseInt("11",2);		//返回 3 (2+1)   進行2進制轉換
  parseInt('1',0) = 1,
  parseInt('2',1) = NaN,   // 基數必須在2-36之間
  parseInt('3',2) = NaN,   //因為是2進制,所以數字必須< 2 ,如果滿2則進為0,跟10機制類似。
 

總結:

     個人感覺,這次面試的公司,問的東西都很基礎,有些東西,自己不常用的知識點,都被問到了,還好,根據理解和殘留的記憶,基本上都回答出來了或者在面試官的引導下,答出來了。上午的面試官問到的js方面多,包括AJAX跨域,性能優化,http等。下午的面試官問到的基本都是css3方面的問題,讓你當場寫代碼,細節追問的很詳細。這次的面試,個人感覺很不錯,學到了不少東西。

  


作者:向婷風

 出處:http://www.cnblogs.com/jtjds/p/5594305.html

 如果您覺得閱讀本文對您有幫助,請點一下“推薦”按鈕,您的“推薦”將是我最大的寫作動力!歡迎各位轉載,但是未經作者

本人同意 轉載文章之后必須在 文章頁面明顯位置給出作者和原文連接,否則保留追究法律責任的權利。

 

 


免責聲明!

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



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