前端面試題集每日一練Day1

問題先導(dǎo)

  • html標(biāo)簽的src屬性和href屬性的區(qū)別?【html

  • css選擇器有哪些?這些選擇器的優(yōu)先級如何判斷?【css

  • js的基本數(shù)據(jù)類型有哪些?有何區(qū)別?【js

  • 合并兩個有序數(shù)組【算法

    給定兩個有序整數(shù)數(shù)組 nums1nums2,請你將 nums2 合并到 nums1 中,使 nums1 成為一個有序數(shù)組。

知識梳理

html標(biāo)簽的src屬性和href屬性的區(qū)別?

src屬性是source的縮寫,意為來源,一般作為媒體元素HTMLDediaElement的媒體資源映射URL。比如圖片、腳本的資源路徑:

<img src="images/like.gif">
<iframe src="inner.html">
<script src="index.min.js"></script>

src加載媒體資源時是阻塞式的,也就是頁面的其他資源會暫停處理,這就是為什么一般把script腳本標(biāo)簽放到文檔末尾加載的一個原因。

hrefHypetext Reference的縮寫,意為超文本引用,由于是非媒體資源,外部引用,也就是頁面無需呈現(xiàn)出來的資源,所以加載這種資源的時候是非阻塞式的。比如linka標(biāo)簽:

<link rel="stylesheet" src="style/main.css">
<a href="./home/login">login</a>

總結(jié)來說就是,src屬性是媒體資源的路徑映射,是阻塞式加載的,而href是超鏈,是非阻塞式的。

我們可以理解為媒體資源是需要實實在在顯示在頁面上的,是DOM結(jié)構(gòu)中的實實在在的數(shù)據(jù),因此會阻塞加載,而超鏈相當(dāng)于一個屬性,一條引用,并不需要把真實的資源呈現(xiàn)到頁面上,也就無需阻塞頁面加載了。

值得注意的一問題是,js腳本并不是媒體資源,也不是DOM需要的數(shù)據(jù),為什么js腳本要用srccss就可以用href呢?實際上,這是設(shè)計之初的決定,可能設(shè)計者認(rèn)為js腳本的執(zhí)行會改變頁面,也就是改變DOM,當(dāng)然需要隨頁面一起加載,而CSS只是頁面的樣式,并不會改變DOM,也就屬于超鏈了,從這層含義理解,就知道是否阻塞頁面和引用的資源大小無關(guān)了,而是和是否實際改變了頁面DOM有關(guān)。

標(biāo)簽:HTML、資源加載

css選擇器有哪些?如何判斷優(yōu)先級?

四類選擇器

css選擇器可以分為四大類:

  1. 基本選擇器
  2. 分組選擇器
  3. 組合選擇器
  4. 偽選擇器

最常用的就是基本選擇器,一般來說有五種基本選擇器:

  • 通用選擇器:*,匹配所有元素
  • 元素選擇器:使用元素名稱進行元素匹配,比如pa
  • 類選擇器:通過類名匹配元素,比如.class
  • 屬性選擇器:通過元素的屬性來匹配元素,如a[href]
  • id選擇器:通過元素id來匹配元素,如#app。值得注意的是,id選擇器不是匹配一個元素而是多個(當(dāng)然我我們不希望頁面有相同id的元素)。

這五種基本選擇器是另外幾種選擇器使用的基礎(chǔ)。

為了擴展選擇器的適用范圍,比如我希望同時選擇p元素和類為red的元素,這時就需要把基本選擇器組合起來,我們使用,把選擇器分開,就得到了選擇器的組合,這就是分組選擇器:

p, .red {
    color: red;
}

同時,有時候為了選擇器更精確,也就是縮寫選擇器的范圍,我們就需要使用組合選擇器,組合選擇器主要有四種(兩后代兩兄弟):

  • 后代選擇器:使用空格進行組合,比如#app div
  • 直接子元素組合器:使用>進行組合,比如div > p
  • 兄弟選擇器:使用~進行組合,比如p ~ p能匹配到p元素之后的兄弟元素。(注意,只能匹配到之后的兄弟元素)
  • 緊鄰兄弟選擇器:有時候為了選擇緊鄰的兄弟元素,我們使用+來進行組合,比如p + a

此外,還有些元素比較特殊,比如被訪問過的a標(biāo)簽,懸浮狀態(tài)下的div等等,這些都是某些場景下的特殊狀態(tài),為了捕獲到這些具有特殊狀態(tài)的標(biāo)簽,我們需要使用偽類選擇器,這些偽類描述了不同狀態(tài)的標(biāo)簽,比如:hover表示鼠標(biāo)懸浮狀態(tài)下的標(biāo)簽,a:visited表示被訪問過的a標(biāo)簽,div:first-child表示div的第一個子元素。

除了偽類,還有一種元素稱之為偽元素,偽元素是真實存在的元素,但又不能被html表達(dá)出來,比如p元素的首字母,首行,這種元素稱不上元素,因為只是元素的一部分,但又是真實存在的,因此稱為偽元素,目前html提供了五種偽元素選擇器:

  • ::brefore:插入元素之前的內(nèi)容
  • ::after:插入元素之后內(nèi)容
  • ::first-letter:元素的首字母
  • ::first-line:元素的首行
  • ::selection:元素被選中的部分

而偽類是記錄特殊狀態(tài)的元素,目前有幾十種,這里不再一一列舉。

選擇器優(yōu)先級

由于我們編寫css時可能會有多個選擇器匹配到同一個元素,而又具有不同的樣式,這時候就需要判斷哪個選擇器優(yōu)先級更高,就選哪個選擇器指定的樣式。

我們知道css叫層疊樣式表,也就是樣式是層疊覆蓋的,如果兩個選擇器的權(quán)重一致,則后面的選擇器會覆蓋前面的選擇器。此外,繼承而來的樣式相當(dāng)于樣式的初始化,優(yōu)先級是最低的。

選擇器的權(quán)重參考值如下所示,權(quán)重越高,優(yōu)先級越高:

  • 元素選擇器:元素選擇器、偽元素選擇器,權(quán)重為1
  • 類選擇器:類選擇器、偽類選擇器、屬性選擇器,權(quán)重為10
  • id選擇器:權(quán)重為100
  • 內(nèi)聯(lián)樣式:權(quán)重為1000
  • !important標(biāo)記權(quán)重值最高

總結(jié)來說就是:!important > 內(nèi)聯(lián)樣式 > id選擇器 > 類/屬性選擇器 > 元素選擇器。而通配符選擇器是沒有權(quán)重的。

標(biāo)簽:css基礎(chǔ)

js數(shù)據(jù)類型有哪幾種?有何區(qū)別?

目前最新的ECMAScript標(biāo)準(zhǔn)定義了9中數(shù)據(jù)類型。

其中,有7種基本數(shù)據(jù)類型:

  • undefined:未定義
  • null:空對象
  • boolean:布爾
  • number:數(shù)字
  • string:字符串
  • bigint:大整數(shù)。es6新增的類型,一般用于描述大于2^53 - 1的整數(shù),這原本是 Javascript中可以用 Number,但如果不使用BigInt()函數(shù)或整數(shù)字面量n來封裝數(shù)字,返回類型還會是number
  • symbol:符號。symbol也是es6新增的基本類型,由Symbol()返回一個唯一的值,所以symbol類型永遠(yuǎn)不會重復(fù)。

2種引用類型:

  • Object:對象。
  • Function:函數(shù)。

我們可以簡單的把Object理解為實例,而Function理解為未實例化的構(gòu)造器,也就是其他語言常說的類。

為何將數(shù)據(jù)類型劃分為基本數(shù)據(jù)類型和引用數(shù)據(jù)類型?這是因為它們在內(nèi)存中的存儲方式是不一樣的,

  • 基本數(shù)據(jù)類型由于占用空間不會太大,且具有相對固定的空間大小,因此是直接存放在棧(stack)中的
  • 引用數(shù)據(jù)類型由于占用空間大、占用空間大小不穩(wěn)定,如果頻繁創(chuàng)建會造成性能問題,所以實體數(shù)據(jù)將存放到堆(heap)數(shù)據(jù)結(jié)構(gòu)中,而在棧中只用記錄該數(shù)據(jù)的堆地址即可,使用的時候再根據(jù)堆地址去堆內(nèi)存中查找。

擴展:從數(shù)據(jù)結(jié)構(gòu)和內(nèi)存來比較棧和堆,

堆和棧的概念存在于數(shù)據(jù)結(jié)構(gòu)中和操作系統(tǒng)內(nèi)存中:

  • 棧結(jié)構(gòu)中的數(shù)據(jù)存取方式為先進后出
  • 堆是一個優(yōu)先隊列,是按優(yōu)先級來進行排序的,優(yōu)先級可以按照大小來規(guī)定。完全二叉樹是堆的一種實現(xiàn)方式。

在操作系統(tǒng)中,內(nèi)存被分為棧區(qū)和堆區(qū):

  • 棧區(qū)內(nèi)存由編譯器自動分配釋放,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧。
  • 堆區(qū)內(nèi)存一般由程序員分配釋放,若程序員不釋放,程序結(jié)束時可能由垃圾回收機制回收

標(biāo)簽:js數(shù)據(jù)類型

合并兩個有序數(shù)組

給定兩個有序整數(shù)數(shù)組 nums1nums2,請你將 nums2 合并到 nums1 中,使 nums1 成為一個有序數(shù)組。

注意題目已經(jīng)告知兩個數(shù)組已經(jīng)是有序的了,所以我們可以使用雙指針法就能從兩個數(shù)組中找打最大值,一個指針指向nums1末端,一個指針指向mums2末端,比較兩個數(shù)組的最大值,并放到數(shù)組末端,直到nums2放置結(jié)束即可。

function merge(nums1, m, muns2, n) {
    let k = m + n - 1
    let p1 = m -1, p2 = n - 1
    while(p2 >= 0) {
        if(p1 < 0){
           nums1[k--] = nums2[p2--]
        } else {
           nums[k--] = nums1[p1] > nums2[p2] ? nums1[p1--] : nums2[p2--];
        }
    }
}

標(biāo)簽:算法、LeetCode

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,333評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,491評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,263評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,946評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 71,708評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,186評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,255評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,409評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,939評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,774評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,976評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,518評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,209評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,641評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,872評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,650評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 47,958評論 2 373

推薦閱讀更多精彩內(nèi)容