主頁 > 前端設計 > 前端面試與學習

前端面試與學習

2021-10-16 09:06:03 前端設計

前端面試

  • 前言
  • 一、HTML和CSS
      • 1、HTML5有那些新特性?
      • 2、如何理解HTML結構的語意化?
      • 3、談談從前端的角度出發做好SEO需要考慮什么?
      • 4、CSS中link和@import的區別是?
      • 5、為什么要初始化樣式?
      • 6、實作元素居中
      • 7、通過css實作一個三角形,并且滑鼠移入時能旋轉
      • 8、如何實作瀏覽器內多個標簽之間的通信?
      • 9、簡述一下src與href的區別?
      • 10、瀏覽器是怎么渲染頁面的?
      • 11、Canvas和SVG圖形的區別是什么?
      • 12、CSS的權重和優先級
      • 13、圣杯布局和雙飛翼布局
  • 二、JavaScript基礎
      • 1、
  • 三、web開發
      • 1、談談降低頁面加載時間的方法


前言

作為前端小小的一員,在學習的程序中記錄下一些重要、關鍵的知識點,有自己總結一些難點,也有一些前端面試高頻知識考點,有助于我復習的同時也希望能幫到大家,讓我們一起學習一起成長,一起拿offer!


一、HTML和CSS


1、HTML5有那些新特性?

(1)HTML4 規定了三種宣告方式,分別是:嚴格模式、過渡模式 和 框架集模式;而HTML5因為不是SGML的子集,只需要<!DOCTYPE>就可以了

(2)語意化更好的內容標簽,headerfooterarticleasidenav

(3)音頻、視頻 API(audio,video)

(4)表單控制元件:HTML5 擁有多個新的表單輸入型別,這些新特性提供了更好的輸入控制和驗證

  • color
  • date
  • datetime
  • datetime-local
  • email
  • month
  • number
  • range
  • search
  • tel
  • ime
  • url
  • week

(5)5個API-本地存盤,長期存盤資料的localStorage,比較常用,臨時存盤的 sessionStorage,瀏覽器關閉后自動洗掉,實際作業中使用的場景不多,

(6)其他還有Canvas畫布、Geolocation地理:地理位置 API 允許用戶向 Web 應用程式提供他們的位置,出于隱私考慮,報告地理位置前會先請求用戶許可、拖拽釋放、Web Wordker等·,

2、如何理解HTML結構的語意化?

去掉或樣式丟失的時候能讓頁面呈現清晰的結構:

html 本身是沒有表現的,我們看到例如<h1>是粗體,字體大小 2em,加粗;<strong>是加粗 的,不要認為這是 html 的表現,這些其實 html 默認的 css 樣式在起作用,所以去掉或樣式 丟失的時候能讓頁面呈現清晰的結構不是語意化的 HTML 結構的優點,但是瀏覽器都有有默 認樣式,默認樣式的目的也是為了更好的表達 html 的語意,可以說瀏覽器的默認樣式和語 義化的 HTML 結構是不可分割的,

螢屏閱讀器(如果訪客有視障)會完全根據你的標記來“讀”你的網頁. 例如,如果你使用的含語意的標記,螢屏閱讀器就會“逐個拼出”你的單詞,而不是試著去對 它完整發音.

PDA、手機等設備可能無法像普通電腦的瀏覽器一樣來渲染網頁(通常是因為這些設備對 CSS 的支持較弱)

使用語意標記可以確保這些設備以一種有意義的方式來渲染網頁.理想情況下,觀看設備的 任務是符合設備本身的條件來渲染網頁.

語意標記為設備提供了所需的相關資訊,就省去了你自己去考慮所有可能的顯示情況(包括 現有的或者將來新的設備).例如,一部手機可以選擇使一段標記了標題的文字以粗體顯示. 而掌上電腦可能會以比較大的字體來顯示.無論哪種方式一旦你對文本標記為標題,您就可 以確信讀取設備將根據其自身的條件來合適地顯示頁面.

搜索引擎的爬蟲也依賴于標記來確定背景關系和各個關鍵字的權重 過去你可能還沒有考慮搜索引擎的爬蟲也是網站的“訪客”,但現在它們他們實際上是極其 寶貴的用戶.沒有他們的話,搜索引擎將無法索引你的網站,然后一般用戶將很難過來訪問.

你的頁面是否對爬蟲容易理解非常重要,因為爬蟲很大程度上會忽略用于表現的標記,而只 注重語意標記.

因此,如果頁面檔案的標題被標記,而不是,那么這個頁面在搜索結果的位置可能會比較靠后. 除了提升易用性外,語意標記有利于正確使用 CSS 和 JavaScript,因為其本身提供了許多“鉤 鉤”來應用頁面的樣式與行為.

SEO 主要還是靠你網站的內容和外部鏈接的,

便于團隊開發和維護
W3C 給我們定了一個很好的標準,在團隊中大家都遵循這個標準,可以減少很多差異化的東 西,方便開發和維護,提高開發效率,甚至實作模塊化開發,

3、談談從前端的角度出發做好SEO需要考慮什么?

了解搜索引擎如何抓取網頁和如何索引網頁

你需要知道一些搜索引擎的基本作業原理,各個搜索引擎之間的區別,搜索機器人 (SE robot 或叫 web crawler)如何進行作業,搜索引擎如何對搜索結果進行排序等 等,

Meta 標簽優化

主要包括主題(Title),網站描述(Description),和關鍵詞(Keywords),還有一些其它 的隱藏文字比如 Author(作者),Category(目錄)Language(編碼語種)等,

如何選取關鍵詞并在網頁中放置關鍵詞

搜索就得用關鍵詞,關鍵詞分析和選擇是 SEO 最重要的作業之一,首先要給網站確定主關鍵 詞(一般在 5 個上下),然后針對這些關鍵詞進行優化,包括關鍵詞密度(Density),相 關度(Relavancy),突出性(Prominency)等等,

了解主要的搜索引擎

雖然搜索引擎有很多,但是對網站流量起決定作用的就那么幾個,比如英文的主要有 Google,Yahoo,Bing 等;中文的有百度,搜狗,有道等,不同的搜索引擎對頁面的抓取和 索引、排序的規則都不一樣,還要了解各搜索門戶和搜索引擎之間的關系,比如 AOL 網頁搜 索用的是 Google 的搜索技術,MSN 用的是 Bing 的技術,

主要的互聯網目錄

Open Directory 自身不是搜索引擎,而是一個大型的網站目錄,他和搜索引擎的主要區別 是網站內容的收集方式不同,目錄是人工編輯的,主要收錄網站主頁;搜索引擎是自動收集 的,除了主頁外還抓取大量的內容頁面,

按點擊付費的搜索引擎

搜索引擎也需要生存,隨著互聯網商務的越來越成熟,收費的搜索引擎也開始大行其道,最 典型的有 Overture 和百度,當然也包括 Google 的廣告專案 Google Adwords,越來越多的 人通過搜索引擎的點擊廣告來定位商業網站,這里面也大有優化和排名的學問,你得學會用 最少的廣告投入獲得最多的點擊,

搜索引擎登錄

網站做完了以后,別躺在那里等著客人從天而降,要讓別人找到你,最簡單的辦法就是將網 站提交(submit)到搜索引擎,如果你的是商業網站,主要的搜索引擎和目錄都會要求你付 費來獲得收錄(比如 Yahoo 要 299 美元),但是好訊息是(至少到目前為止)最大的搜索引 擎 Google 目前還是免費,而且它主宰著 60%以上的搜索市場,

鏈接交換和鏈接廣泛度(Link Popularity)

網頁內容都是以超文本(Hypertext)的方式來互相鏈接的,網站之間也是如此,除了搜索 引擎以外,人們也每天通過不同網站之間的鏈接來 Surfing(“沖浪”),其它網站到你的 網站的鏈接越多,你也就會獲得更多的訪問量,更重要的是,你的網站的外部鏈接數越多, 會被搜索引擎認為它的重要性越大,從而給你更高的排名,

4、CSS中link和@import的區別是?

Link屬于 html 標簽,而@import是 CSS 中提供的

在頁面加載的時候,link 會同時被加載,而@import 參考的 CSS 會在頁面加載完成后才會加 載參考的 CSS
@import 只有在 ie5 以上才可以被識別,而 link 是 html 標簽,不存在瀏覽器兼容性問題
Link 引入樣式的權重大于@import 的參考(@import 是將參考的樣式匯入到當前的頁面中)
故一般來說使用link更快更安全

5、為什么要初始化樣式?

由于瀏覽器的兼容問題,不同瀏覽器對標簽的默認樣式值不同,若不初始化會照成不同瀏覽器之間的顯示差異
但是初始化css會對搜索引擎優化造成小影響

6、實作元素居中

兩種實作方法,第一種簡單快捷通過設定外層盒子flex布局,然后設定justify-content:center; 實作橫向居中(默認水平居中),align-iten: center;實作縱向居中(默認即垂直居中),

第二種即通過定位來實作,注意外層position設定為relative內層的absolute才管用,設定完相應的偏移值后別忘了平移一下,將內盒子自身的寬高算進去,

		.outer { 
			width: 300px;
			height: 300px;
			border: 1px solid red;
			background-color: red;
/* 			display: flex;
			justify-content: center;
			align-items: center; */
			position: relative;
		}
				
		.inner { 
			width: 150px;
			height: 150px;
			background: blue; 
			position: absolute;
			top: 50%;
			left: 50%;
			transform: translate(-50%, -50%);
		}

7、通過css實作一個三角形,并且滑鼠移入時能旋轉

注意實作旋轉的時候通過transform-origin設定旋轉中心,

		.box {
			margin: 0 auto;
			width: 0;
			height: 0;
			border-top: 100px solid transparent;
			border-bottom: 100px solid transparent;
			border-left: 100px solid greenyellow;
			transform-origin: 0% 50%; /* 這個不能放在下面不然會亂 ->*/
			transition: transform 0.5s;
		}
		.box:hover {
			transform: rotate(90deg);	
		}

8、如何實作瀏覽器內多個標簽之間的通信?


呼叫 localstorgecookies 等本地存盤方式:

  • 在 B 頁面中可以使用 window.opener 獲得 A 頁面的 window 句柄,使用該句柄即可呼叫 A 頁面中的物件,函式等,
    例如 A 頁面定義 js 函式 onClosePageB,在 B 頁面可以用 window.opener.onClosePageB 來進行回呼,
  • 使用 window.showModalDialog(sURL [, vArguments] [,sFeatures])打開新視窗, 其中vArguments 引數可以用來向對話框傳遞引數,傳遞的引數型別不限,包括陣列、函式等,對話框通過window.dialogArguments來取得傳遞進來的引數,
  • 如果是支持 HTML5 的話,建議用本地存盤 (local storage),它支持一個事件方法window.onstorage,只要其中一個視窗修改了本地存盤,其他同源視窗會觸發這個事件,

9、簡述一下src與href的區別?

  • src ?于替換當前元素,href?于在當前?檔和引?資源之間確?聯系,
  • src 是 source 的縮寫,指向外部資源的位置,指向的內容將會嵌?到?檔中當前標簽所在位置;在請求 src 資源時會將其指向的資源下載并應?到?檔內,例如 js 腳本,img 圖?和 frame 等元素
  • 當瀏覽器決議到該元素時,會暫停其他資源的下載和處理,直到將該資源加載、編譯、執?完畢,圖?和框架等元素也如此,類似于將所指向資源嵌?當前標簽內,這也是為什么將js腳本放在底部?不是頭部
  • href 是 Hypertext Reference 的縮寫,指向?絡資源所在位置,建?和當前元素(錨點)或當前?檔(鏈接)之間的鏈接,如果我們在?檔中添加<link href="common.css" rel="stylesheet"/> 那么瀏覽器會識別該?檔為 css ?件,就會并?下載資源并且不會停?對當前?檔的處理,這也是為什么建議使? link ?式來加載 css ,?不是使? @import ?式

10、瀏覽器是怎么渲染頁面的?


11、Canvas和SVG圖形的區別是什么?

  • Canvas 和 SVG 都可以在瀏覽器上繪制圖形,

  • SVG Canvas 繪制后記憶,換句話說任何使用 SVG 繪制的形狀都能被記憶和操作,瀏覽器可以再次顯示 Canvas 則是繪制后忘記,一旦繪制完成你就不能訪問像素和操作它 SVG 對于創建圖形例如 CAD 軟體是良好的,一旦東西繪制,用戶就想去操作它 Canvas 則用于繪制和遺忘類似動漫和游戲的場畫,

  • 為了之后的操作,SVG 需要記錄坐標,所以比較緩慢,

  • 因為沒有記住以后事情的任務,所以 Canvas 更快,

  • SVG 并不屬于 html5 專有內容,在 html5 之前就有 SVG,
    SVG 檔案的擴展名是”.svg”,
    SVG 繪制的影像在圖片質量不下降的情況下被放大,
    SVG 影像經常在網頁中制作小圖示和一些動態效果圖


12、CSS的權重和優先級

權重

  • 從0開始,一個行內樣式+1000,一個id選擇器+100,一個屬性選擇器、class或者偽類+10,一個元素選擇器,或者偽元素+1,通配符+0

CSS的偽類選擇器有 :hover、:active、:focus等,偽元素選擇器有::first-letter、::before、::after等,具體可以看這篇文章

優先級

  • 權重相同,寫在后面的覆寫前面的
  • 使用 !important 達到最大優先級,都使用 !important 時,權重大的優先級高

13、圣杯布局和雙飛翼布局

這兩個三列布局的方式是大廠的高頻考點,不只是要能實作,還要知道這兩者實作的差異,這篇博客清楚的介紹了這兩者的概念、實作程序和他們的區別,


二、JavaScript基礎


1、


三、web開發


1、談談降低頁面加載時間的方法

1、壓縮 css、js 檔案
2、合并 js、css 檔案,減少 http 請求
3、外部 js、css 檔案放在最底下
4、減少 dom 操作,盡可能用變數替代不必要的 dom 操作


更多精彩使用內容后續持續更新

我的世界
我的世界
我的世界
我的世界

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/317949.html

標籤:其他

上一篇:JavaScript如何實作深拷貝

下一篇:ES6常用知識點總結一

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • vue移動端上拉加載

    可能做得過于簡單或者比較low,請各位大佬留情,一起探討技術 ......

    uj5u.com 2020-09-10 04:38:07 more
  • 優美網站首頁,頂部多層導航

    一個個人用的瀏覽器首頁,可以把一下常用的網站放在這里,平常打開會比較方便。 第一步,HTML代碼 <script src=https://www.cnblogs.com/szharf/p/"js/jquery-3.4.1.min.js"></script> <div id="navigate"> <ul> <li class="labels labels_1"> ......

    uj5u.com 2020-09-10 04:38:47 more
  • 頁面為要加<!DOCTYPE html>

    最近因為寫一個js函式,需要用到$(window).height(); 由于手寫demo的時候,過于自信,其實對前端方面的認識也不夠體系,用文本檔案直接敲出來的html代碼,第一行沒有加上<!DOCTYPE html> 導致了$(window).height();的結果直接是整個document的高 ......

    uj5u.com 2020-09-10 04:38:52 more
  • WordPress網站程式手動升級要做好資料備份

    WordPress博客網站程式在進行升級前,必須要做好網站資料的備份,這個問題良家佐言是遇見過的;在剛開始接觸WordPress博客程式的時候,因為升級問題和博客網站的修改的一些嘗試,良家佐言是吃盡了苦頭。因為購買的是西部數碼的空間和域名,每當佐言把自己的WordPress博客網站搞到一塌糊涂的時候 ......

    uj5u.com 2020-09-10 04:39:30 more
  • WordPress程式不能升級為5.4.2版本的原因

    WordPress是一款個人博客系統,受到英文博客愛好者和中文博客愛好者的追捧,并逐步演化成一款內容管理系統軟體;它是使用PHP語言和MySQL資料庫開發的,用戶可以在支持PHP和MySQL資料庫的服務器上使用自己的博客。每一次WordPress程式的更新,就會牽動無數WordPress愛好者的心, ......

    uj5u.com 2020-09-10 04:39:49 more
  • 使用CSS3的偽元素進行首字母下沉和首行改變樣式

    網頁中常見的一種效果,首字改變樣式或者首行改變樣式,效果如下圖。 代碼: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, ......

    uj5u.com 2020-09-10 04:40:09 more
  • 關于a標簽的講解

    什么是a標簽? <a> 標簽定義超鏈接,用于從一個頁面鏈接到另一個頁面。 <a> 元素最重要的屬性是 href 屬性,它指定鏈接的目標。 a標簽的語法格式:<a href=https://www.cnblogs.com/summerxbc/p/"指定要跳轉的目標界面的鏈接">需要展示給用戶看見的內容</a> a標簽 在所有瀏覽器中,鏈接的默認外觀如下: 未被訪問的鏈接帶 ......

    uj5u.com 2020-09-10 04:40:11 more
  • 前端輪播圖

    在需要輪播的頁面是引入swiper.min.js和swiper.min.css swiper.min.js地址: 鏈接:https://pan.baidu.com/s/15Uh516YHa4CV3X-RyjEIWw 提取碼:4aks swiper.min.css地址 鏈接:https://pan.b ......

    uj5u.com 2020-09-10 04:40:13 more
  • 如何設定html中的背景圖片(全屏顯示,且不拉伸)

    1 <style>2 body{background-image:url(https://uploadbeta.com/api/pictures/random/?key=BingEverydayWallpaperPicture); 3 background-size:cover;background ......

    uj5u.com 2020-09-10 04:40:16 more
  • Java學習——HTML詳解(上)

    HTML詳解 初識HTML Hyper Text Markup Language(超文本標記語言) 1 <!--DOCTYPE:告訴瀏覽器我們要使用什么規范--> 2 <!DOCTYPE html> 3 <html lang="en"> 4 <head> 5 <!--meta 描述性的標簽,描述一些 ......

    uj5u.com 2020-09-10 04:40:33 more
最新发布
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 07:59:23 more
  • 生產事故-走近科學之消失的JWT

    入職多年,面對生產環境,盡管都是小心翼翼,慎之又慎,還是難免捅出簍子。輕則滿頭大汗,面紅耳赤。重則系統停擺,損失資金。每一個生產事故的背后,都是寶貴的經驗和教訓,都是專案成員的血淚史。為了更好地防范和遏制今后的各類事故,特開此專題,長期更新和記錄大大小小的各類事故。有些是親身經歷,有些是經人耳傳口授 ......

    uj5u.com 2023-04-18 07:55:04 more
  • 記錄--Canvas實作打飛字游戲

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 打開游戲界面,看到一個畫面簡潔、卻又富有挑戰性的游戲。螢屏上,有一個白色的矩形框,里面不斷下落著各種單詞,而我需要迅速地輸入這些單詞。如果我輸入的單詞與螢屏上的單詞匹配,那么我就可以獲得得分;如果我輸入的單詞錯誤或者時間過長,那么我就會輸 ......

    uj5u.com 2023-04-04 08:35:30 more
  • 了解 HTTP 看這一篇就夠

    在學習網路之前,了解它的歷史能夠幫助我們明白為何它會發展為如今這個樣子,引發探究網路的興趣。下面的這張圖片就展示了“互聯網”誕生至今的發展歷程。 ......

    uj5u.com 2023-03-16 11:00:15 more
  • 藍牙-低功耗中心設備

    //11.開啟藍牙配接器 openBluetoothAdapter //21.開始搜索藍牙設備 startBluetoothDevicesDiscovery //31.開啟監聽搜索藍牙設備 onBluetoothDeviceFound //30.停止監聽搜索藍牙設備 offBluetoothDevi ......

    uj5u.com 2023-03-15 09:06:45 more
  • canvas畫板(滑鼠和觸摸)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>canves</title> <style> #canvas { cursor:url(../images/pen.png),crosshair; } #canvasdiv{ bo ......

    uj5u.com 2023-02-15 08:56:31 more
  • 手機端H5 實作自定義拍照界面

    手機端 H5 實作自定義拍照界面也可以使用 MediaDevices API 和 <video> 標簽來實作,和在桌面端做法基本一致。 首先,使用 MediaDevices.getUserMedia() 方法獲取攝像頭媒體流,并將其傳遞給 <video> 標簽進行渲染。 接著,使用 HTML 的 < ......

    uj5u.com 2023-01-12 07:58:22 more
  • 記錄--短視頻滑動播放在 H5 下的實作

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 短視頻已經無數不在了,但是主體還是使用 app 來承載的。本文講述 H5 如何實作 app 的視頻滑動體驗。 無聲勝有聲,一圖頂百辯,且看下圖: 網址鏈接(需在微信或者手Q中瀏覽) 從上圖可以看到,我們主要實作的功能也是本文要講解的有: ......

    uj5u.com 2023-01-04 07:29:05 more
  • 一文讀懂 HTTP/1 HTTP/2 HTTP/3

    從 1989 年萬維網(www)誕生,HTTP(HyperText Transfer Protocol)經歷了眾多版本迭代,WebSocket 也在期間萌芽。1991 年 HTTP0.9 被發明。1996 年出現了 HTTP1.0。2015 年 HTTP2 正式發布。2020 年 HTTP3 或能正... ......

    uj5u.com 2022-12-24 06:56:02 more
  • 【HTML基礎篇002】HTML之form表單超詳解

    ??一、form表單是什么

    ??二、form表單的屬性

    ??三、input中的各種Type屬性值

    ??四、標簽 ......

    uj5u.com 2022-12-18 07:17:06 more