前端筆試+面試分享

以下是個人線下面試遇到的真實的題,僅供參考和學習

1.?css?選擇符有哪些?哪些屬性可以繼承?優先級算法加何計算?

  • CSS選擇符有很多種,例如類型選擇器、類選擇器、ID選擇器、屬性選擇器、偽類選擇器、偽元素選擇器等。

?

?

  • CSS屬性可以分為繼承屬性和非繼承屬性。繼承屬性是指當元素沒有指定該屬性的值時,會取父元素的同屬性的計算值。例如,字體、顏色、文本對齊等屬性是繼承屬性。非繼承屬性是指當元素沒有指定該屬性的值時,會取該屬性的初始值。例如,寬度、高度、邊框、背景等屬性是非繼承屬性。
  • CSS優先級算法是根據選擇器中的每一種選擇器類型的數值來計算的。數值越高,優先級越高。數值由四個部分組成,分別是內聯樣式、ID選擇器、類選擇器和類型選擇器。每個部分用一個0-255之間的數字表示,數字越大,權重越高。例如,內聯樣式的數值是1000,ID選擇器的數值是100,類選擇器的數值是10,類型選擇器的數值是1。如果兩個規則的數值相同,那么后出現的規則會覆蓋前面的規則。


2.?GET?和POST?請求的區別??HTTP?與?HTTPS?的區別?

GET和POST都是HTTP協議中的請求方式,它們有以下幾個區別:

  • - GET請求的參數是在URL上,而POST請求的參數是在消息主體中。
  • - GET請求的參數有URL長度限制,而POST請求的參數沒有限制。
  • - GET請求的參數只能是ASCII字符,而POST請求的參數可以是任意類型。
  • - GET請求更容易被緩存、保存在服務器日志、以及瀏覽器瀏覽記錄中,因此POST請求更安全。
  • - GET請求表示從服務器獲取資源,而POST請求表示向服務器提交數據。

B站一位博主我覺得的講的很好:

【前端面試】當被面試官問到 get 和 post 的區別

HTTP和HTTPS都是網絡協議,它們有以下幾個區別:

  • - HTTPS是HTTP的安全版本,它使用了SSL/TLS協議進行了加密處理,因此傳輸的數據更安全。
  • - HTTPS需要申請證書,一般需要一定的費用,而HTTP不需要。
  • - HTTP和HTTPS使用的是不同的連接方式和端口,HTTP是80端口,HTTPS是443端口
  • - HTTPS比HTTP更耗費服務器資源,因為它需要進行加密和解密的操作

B站一位博主我覺得的講的很好:

http和https到底有什么區別?


3.描述?AJAX?的跨城問題,有哪些解決方案?

AJAX跨域問題是指瀏覽器的同源策略限制了AJAX請求不同域名的數據。這是為了保護用戶的信息安全,防止惡意網站竊取數據。

解決AJAX跨域問題的常用方案有:

  1. **JSONP**:利用script標簽可以跨域的原理,動態插入一個回調函數,由服務器返回數據缺點是只能發起GET請求,需要服務器支持。
  2. **nginx反向代理**:利用nginx把跨域請求轉發為同域請求,從而繞過瀏覽器的限制。缺點是需要在nginx進行額外配置,語義不清晰。
  3. **CORS**:跨域資源共享,是一種規范化的跨域請求解決方案,通過在服務器端設置響應頭來允許不同域名的請求。優點是安全可靠,支持各種請求方式,可以自定義規則。

ajax請求,解決跨域的問題

同源策略是瀏覽器的一種安全策略,它用于限制一個源的文檔或者它加載的腳本如何能與另一個源的資源進行交互。它能幫助阻隔惡意文檔,減少可能被攻擊的媒介。

如果兩個URL的**協議**、**域名**、**端口**都相同的話,則這兩個URL是**同源**的。例如,`http://www.example.com/foo.html`和`http://www.example.com/bar.html`是同源的,

但是`http://www.example.com:8080/foo.html`和`http://www.example.net/bar.html`不是同源的。

ajax和接口的關系

ajax是一種前端技術,它可以通過XMLHttpRequest對象向服務器發送請求和接收響應,從而實現無刷新的頁面更新。

接口是后端提供的一種數據交換的方式,它可以返回json或jsonp格式的數據給前端,從而實現前后端的數據交互。

ajax和接口之間需要遵守同源策略,也就是說,如果請求的接口不是同一個域,就會產生跨域問題。解決跨域問題的方法有很多種,例如CORS、JSONP、代理服務器等。CORS和JSONP的原理和用法已經在上一條介紹過了。代理服務器的方法是利用一個中間服務器來轉發請求和響應,從而繞過瀏覽器的跨域限制。


4.?JS?的淺拷貝和深拷貝的實現

淺拷貝和深拷貝是指復制一個對象時,是否復制對象本身還是只復制對象的引用。

淺拷貝只復制一層,更深層次的對象只拷貝引用,所以修改新對象會影響舊對象。

深拷貝則復制并創建一個一模一樣的對象,不共享內存,修改新對象不會影響舊對象。

JS中實現淺拷貝的方法有:Object.assign()Array.prototype.slice()Array.prototype.concat()等

實現深拷貝的方法有:JSON.parse(JSON.stringify())、遞歸遍歷、lodash.cloneDeep()等

?淺拷貝:

    <script>var obj = {id: 1,name: 'andy',msg: {age: 18,color: ['pink', 'blue']}};var o = {}for (var k in obj) {// k 是屬性名 obj[k] 是屬性值o[k] = obj[k];}console.log(o);o.msg.age = 20;console.log(obj);// Object.assign(o, obj) // 淺拷貝語法糖// console.log(o);// o.msg.age = 20;// console.log(obj);</script>

?深拷貝

    <script>var obj = {id: 1,name: 'andy',msg: {age: 18},color: ['pink', 'red']};var o = {};// 用遞歸的方式完成深拷貝// 封裝函數function deepCopy(newobj, oldobj) {// 遍歷oldobj的屬性名for (var k in oldobj) {// 判斷屬性屬于哪種數據類型// 1.獲取屬性值 oldobj[k]var item = oldobj[k];// 2.判斷是否屬于數組(因為數組也屬于對象,所以必須先判斷數組)if (item instanceof Array) {newobj[k] = []; // (1)先給newobj添加一個屬性k,同oldobj里的kdeepCopy(newobj[k], item) // (2)再用oldobj[k]賦值給newobj[k]} else if (item instanceof Object) {// 3.判斷是否屬于對象newobj[k] = {};deepCopy(newobj[k], item)} else {// 4.屬于簡單數據類型newobj[k] = item}}}deepCopy(o, obj)console.log(o);</script>


5.?請描述一下?cookies,?sessionstorage?和 localStorage?的區別?

cookies, sessionStorage 和 localStorage 都是用于在瀏覽器端存儲數據的技術,但它們有以下區別:

  1. cookies 數據始終在同源的 http 請求中攜帶,即 cookies 在瀏覽器和服務器間來回傳遞,而 sessionStorage 和 localStorage 不會自動把數據發給服務器,僅在本地保存。
  2. cookies 的大小一般不超過 4k,而 sessionStorage 和 localStorage 的大小可以達到 5M 甚至更多。
  3. cookies 可以設置失效時間,如果沒有設置時間,關閉瀏覽器 cookies 失效,如果設置了時間,cookies 就會存儲在硬盤中,過期失效。sessionStorage 的有效期是頁面會話持續,如果頁面會話結束(關閉窗口或標簽頁),sessionStorage 就會消失。localStorage 的有效期是永久的,除非手動刪除。
  4. ?cookies 可以設置作用域(domain 和 path),限制其發送范圍。sessionStorage 和 localStorage 的作用域是同源的(協議相同/域名相同/端口相同)。


6.?JS實現一個折半查找

折半查找,也叫二分查找,是一種在有序數組中查找指定值的高效算法。它的基本思想是,每次比較數組的中間元素和目標值,如果相等,就返回中間元素的索引;如果不等,就根據目標值和中間元素的大小關系,縮小查找范圍,重復上述過程,直到找到目標值或者數組為空1。

JS 實現一個折半查找的代碼如下2:

function binSearch(arr, data) {// arr 是有序數組,data 是要查找的值var upperBound = arr.length - 1; // 上界var lowerBound = 0; // 下界while (lowerBound <= upperBound) {var mid = Math.floor((upperBound + lowerBound) / 2); // 中間索引if (arr[mid] < data) {lowerBound = mid + 1; // 如果中間元素小于目標值,下界變為中間索引加一} else if (arr[mid] > data) {upperBound = mid - 1; // 如果中間元素大于目標值,上界變為中間索引減一} else {return mid; // 如果中間元素等于目標值,返回中間索引}}return -1; // 如果沒有找到目標值,返回-1
}


7.有一天,一個人要過一座長為80?米的橋,而這個人有一個特點:他每走1米就要吃掉一顆花生米。可惜的是,這個人的身上最多只能裝?60?顆花生米,假如現在橋頭邊有足夠多的花生米,請問,這個人最少要吃多少顆花生米才能順利過橋呢?

這是一個經典的智力題,也是百度校招面試題。這個人最少要吃**140**顆花生米才能順利過橋。具體的解法是:

  • 第一次(帶60)走到20米處,吃掉40顆花生米(走過去+返回橋頭),放下20顆花生米,回到橋頭;
  • 第二次(帶60)走到20米處,吃掉40顆花生米(走過去+返回橋頭),放下20顆花生米(此時20米處有40顆),回到橋頭;
  • 第三次(帶40),走到20米,還剩下(20)再加上20米處的40,剛好60顆,走完剩下的60米,過橋成功。
  • 總共吃掉了60+40+40=140顆花生米。


8.有一種粗細不均勻的繩子,已知從頭燒到尾需要1個小時,現在有若干條這樣的繩子,問如何用燒繩的方法來計時?45?分鐘呢?
?

這是一個有趣的智力題。根據網上的一些解答,有以下幾種方法可以用燒繩來計時45分鐘:

  • ?兩根繩子,一根繩子從一頭燒,一根繩子從兩頭燒,第二根燒完的時候第一根還剩半小時。把這還剩半小時的繩子另一頭點燃,可以再燒15分鐘。

?面試視頻分享:

前端面試分享

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/41774.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/41774.shtml
英文地址,請注明出處:http://en.pswp.cn/news/41774.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【1day】復現海康威視綜合安防管理平臺artemis接口Spring boot heapdump內存泄露漏洞

目錄 一、漏洞描述 二、影響版本 三、資產測繪 四、漏洞復現 一、漏洞描述 HIKVISION iSecure Center綜合安防管理平臺是一套“集成化”、“智能化”的平臺,通過接入視頻監控、一卡通

Algorithem Review 5.2 圖論

網絡流 設源點為 s s s&#xff0c;匯點為 t t t&#xff0c;每條邊 e e e 的流量上限為 c ( e ) c(e) c(e)&#xff0c;流量為 f ( e ) f(e) f(e)。割 指對于某一頂點集合 P ? V P \subset V P?V&#xff0c;從 P P P 出發指向 P P P 外部的那些原圖中的邊的集合&a…

回歸預測 | MATLAB實現基于SSA-KELM-Adaboost麻雀算法優化核極限學習機結合AdaBoost多輸入單輸出回歸預測

回歸預測 | MATLAB實現基于SSA-KELM-Adaboost麻雀算法優化核極限學習機結合AdaBoost多輸入單輸出回歸預測 目錄 回歸預測 | MATLAB實現基于SSA-KELM-Adaboost麻雀算法優化核極限學習機結合AdaBoost多輸入單輸出回歸預測預測效果基本介紹模型描述程序設計參考資料 預測效果 基本…

SSH遠程連接MacOS catalina并進行終端顏色配置

一、開關SSH服務 在虛擬機上安裝了MacOS catalina&#xff0c;想要使用SSH遠程進行連接&#xff0c;但是使用“系統偏好設置”/“共享”/“遠程登錄”開關進行打開&#xff0c;卻一直是正在啟動“遠程登錄”&#xff1a; 難道是catalina有BUG&#xff1f;不過還是有方法的&…

第07天 Static關鍵字作用及用法

?作者簡介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;熱愛Java后端開發者&#xff0c;一個想要與大家共同進步的男人&#x1f609;&#x1f609; &#x1f34e;個人主頁&#xff1a;Leo的博客 &#x1f49e;當前專欄&#xff1a;每天一個知識點 ?特色專欄&#xff1a…

【前端|Javascript第5篇】全網最詳細的JS的內置對象文章!

前言 在當今數字時代&#xff0c;前端技術正日益成為塑造用戶體驗的關鍵。我們在開發中需要用到很多js的內置對象的一些屬性來幫助我們更快速的進行開發。或許你是剛踏入前端領域的小白&#xff0c;或者是希望深入了解內置對象的開發者&#xff0c;不論你的經驗如何&#xff0c…

使用Dockerfile制作RocketMq的Docker鏡像(任意版本)

使用dockerfile制作任意版本的docker鏡像 1、Dockerfile 創建文件rocketmq #FROM openjdk:8 FROM java8:1.0 #上面的基礎鏡像可以自己 docker pull LABEL "作者"=aaaaaENV ROCKETMQ_VERSION 5.1.3 # ENV LANG en_US.UTF-8ENV ROCKETMQ_HOME="/home/rocketm…

MATLAB中的代數環概念

在 Simulink 模型中&#xff0c;當存在信號環并且信號環中只存在直接饋通模塊時&#xff0c;將出現代數環。直接饋通表示 Simulink 需要模塊輸入信號的值來計算當前時間步的輸出。這種信號循環會在同一時間步中產生模塊輸出和輸入的循環依存關系。這會導致一個需要在每個時間步…

【【verilog典型電路設計之流水線結構】】

verilog典型電路設計之流水線結構 下圖是一個4位的乘法器結構&#xff0c;用verilog HDL 設計一個兩級流水線加法器樹4位乘法器 對于流水線結構 其實需要做的是在每級之間增加一個暫存的數據用來存儲 我們得到的東西 我們一般來說會通過在每一級之間插入D觸發器來保證數據的聯…

Oracle 數據庫備份

1、使用管理員賬號創建對應的directory目錄 登錄數據庫 sqlplus / as sysdba 創建directory create or replace directory dumpdir as F:\container; 2、給用戶賦予使用該目錄的權限 grant read,write on directory dumpdir to Scott; 查看創建的目錄位置 select * fro…

OpenCV-Python中的圖像處理-圖像特征

OpenCV-Python中的圖像處理-圖像特征 圖像特征Harris角點檢測亞像素級精度的角點檢測Shi-Tomasi角點檢測SIFT(Scale-Invariant Feature Transfrom)SURF(Speeded-Up Robust Features)FAST算法BRIEF(Binary Robust Independent Elementary Features)算法ORB (Oriented FAST and R…

JavaScript判空設默認值的幾種寫法

前端面試題庫 &#xff08;面試必備&#xff09; 推薦&#xff1a;★★★★★ 地址&#xff1a;前端面試題庫 實踐中需要給某個變量賦值時&#xff0c;若數據來源不可控&#xff0c;通常會給它設置一個默認值&#xff08;就像空對象模式一樣&#xff09;。JavaScri…

python編程中有哪些方便的調試方法

大家好&#xff0c;給大家分享一下一個有趣的事情&#xff0c;很多人還不知道這一點。下面詳細解釋一下。現在讓我們來看看&#xff01; 對于每個程序開發者來說&#xff0c;調試幾乎是必備技能。常用Pycharm編輯器里的方法有Print大法、log大法&#xff0c;但缺少類似Matlab的…

敏感掛載binfmt_misc容器逃逸復現和分析

前言 對于/proc下有很多掛載會導致容器逃逸&#xff0c;其中binfmt_misc就是一種可以利用的逃逸掛載 binfmt_mics 實驗 touch test_fmt_intp echo aaa > test_fmt echo #!/bin/sh > test_fmt_intp echo >> test_fmt_intp chmod x test_fmt_intp echo :test_fmt…

怎么開通Tik Tok海外娛樂公會呢?

TikTok作為全球知名的社交媒體平臺&#xff0c;吸引了數億用戶的關注和參與。許多公司和個人渴望通過開通TikTok直播公會進入這一領域&#xff0c;以展示自己的創造力和吸引更多粉絲。然而&#xff0c;成為TikTok直播公會并非易事&#xff0c;需要滿足一定的門檻和申請找cmxyci…

【日常積累】Linux之init系統學習

init系統簡介: Linux 操作系統的啟動首先從 BIOS 開始&#xff0c;接下來進入 boot loader&#xff0c;由 bootloader 載入內核&#xff0c;進行內核初始化。內核初始化的最后一步就是啟動 pid 為 1 的 init 進程&#xff0c;這個進程是系統的第一個進程&#xff0c;它負責產生…

銀河麒麟服務器v10 sp1 .Net6.0 上傳文件錯誤

上一篇&#xff1a;銀河麒麟服務器v10 sp1 部署.Net6.0 http https_csdn_aspnet的博客-CSDN博客 .NET 6之前&#xff0c;在Linux服務器上安裝 libgdiplus 即可解決&#xff0c;libgdiplus是System.Drawing.Common原生端跨平臺實現的主要提供者&#xff0c;是開源mono項目。地址…

封裝form表單

目錄 1. 源碼 2. 其他頁面引用 ps&#xff1a;請看完看明白再復用 1. 源碼 <template><div style"width: 100%; height: 100%" class"form-condition"><!-- 普通表單 --><el-card shadow"hover" class"cardheigh…

AQS的原理及應用

文章目錄 AQS引言AQS 的原理AQS 應用舉例1:Semaphore舉例2:ReentrantLockAQS 的案例分析問題背景解決方案AQS 引言 在我們的日常生活和工作中,往往需要協調各個線程之間的執行順序和資源使用,而AQS(AbstractQueuedSynchronizer)即為 Java 并發包中提供的一種解決辦法。…

ubuntu 部署 ChatGLM-6B 完整流程 模型量化 Nvidia

ubuntu 部署 ChatGLM-6B 完整流程 模型量化 Nvidia 初環境與設備環境準備克隆模型代碼部署 ChatGLM-6B完整代碼 ChatGLM-6B 是一個開源的、支持中英雙語的對話語言模型&#xff0c;基于 General Language Model (GLM) 架構&#xff0c;具有 62 億參數。結合模型量化技術&#x…