今日頭條實習面試總結
1、實現陣列扁平化
陣列扁平化是指將一個多維陣列變為一維陣列
[1, [2, 3, [4, 5]]] ------> [1, 2, 3, 4, 5]
(1)toString & split或者jion & split
呼叫陣列的toString方法,將陣列變為字串然後再用split分割還原為陣列
function flatten(Ary){ var midAry=Ary.toString(); // var midAry=Ary.join(","); var result=midAry.split(","); return result; }
(2)遞迴
遞迴的遍歷每一項,若為陣列則繼續遍歷,否則concat
2、實現三欄佈局,中間自適應,左右兩邊固定
自己的實現:
.container{ position:relative; width:100%; } .left{ width:100px; background:red; float:left; } .main{ width:100%; padding:0 100px; background:green; } .right{ width:100px; background:red; position:absolute; right:0; top:0; }
html程式碼段
<div class="container">
<div class="left">left </div>
<div class="main">main </div>
<div class="right"> right</div>
</div>
3、說一說var 、let、const 的區別
宣告變數的三種方式 | 概念區別 | 重複宣告 | 作用域問題 | 變數提升問題 |
var | var 宣告全域性變數 | 用於宣告變數,重複宣告同一變數後面的覆蓋前面的。 | 可以在作用域外使用 | var 申明的變數作用域會提升 |
let | let:宣告塊級變數,即區域性變數。 | 用於宣告變數,let在相同的作用域下面不能申明相同的變數 | 宣告的地方形成作用域,作用域外無法訪問 | let 申明的變數作用域不會提升 |
const | const:用於宣告常量,也具有塊級作用域 ,也可宣告塊級 | 用於宣告常量,const申明的變數初始化後不能被修改 | cosnt只能作用於當前作用域 | const申明的作用域不會被提升 |
4、css實現圓,梯形
圓:
#circle{
width:100px;
height:100px;
border-radius:50px;
background:#ccc;
}
橢圓:border-radius可以單獨指定水平和垂直半徑,只要用一個(/)分隔這兩個值就行。還一個特性是,它可以接受長度值,還可以接受百分比,兩種特性結合,就可以自適應了。
.ellipse{
width: 200px;
height: 100px;
background-color: red;
border-radius:50%;
}
梯形:
.tx1{
float:left;
width:0px;
height:0px;
border-width: 50px;
border-style: solid;
border-color: transparent blue blue transparent;
}
.tx2{
width:100px;
height:100px;
background:#ccc;
float:left;
}
.tx3{
float:left;
width:0px;
height:0px;
border-width: 50px;
border-style: solid;
border-color: transparent transparent blue blue;
}
html程式碼
<div class="tx1"></div>
<div class="tx2"></div>
<div class="tx3"></div>
5、清除子元素的內容,還要清除其事件,一般用什麼
如果僅僅刪除父元素下面的子元素,使用removeChild。但是可能為子元素綁定了事件,所以不能只刪除元素,而讓繫結的時間繼續佔用記憶體
btn1.onclick = function(){}
btn1.onclick =null;
這樣就是在解除事件繫結。
如果是用addEventListener給元素繫結的事件,那麼可以用removeEventListener來解除事件繫結。
6、一般怎麼實現響應式佈局
(1)先介紹幾種其他佈局的概念
靜態佈局:設計固定樣式,如果要適配移動端,則單獨再設計一套樣式
彈性佈局:css3引入的一種佈局方式(用來替代之前的float浮動佈局)
flex-flow: 應用到需要佈局的元素的父元素上,先指定元素為flex佈局,display:flex;
fllex-flow是 flex-direction和 flex-wrap的簡寫形式
flex-direction |
定義了彈性專案在彈性容器中的放置方向,(預設行內方向、從左到右) row初始值,還有row-reverse || column || column-reverse |
flex-wrap |
指定專案是否在必要的時候換行,預設不換行 arap初始值,還有 wrap || wrap-reverse |
.top ul{
display:flex;
flex-direction: row;
flex-wrap:nowrap;
}
自適應佈局:分別為不同的螢幕解析度定義佈局
流式佈局:對頁面元素的寬度進行適配調整
響應式佈局:運用各種樣式技巧,實現隨著螢幕的變化以及PC端移動端的變化,頁面佈局做出相應調整。
(2)響應式佈局的步驟實現
須加一句頭部程式碼
<meta name="viewport" content="width=device-width",initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
通過媒體查詢來設定樣式,媒體查詢@media不僅可以設定字型,也可以對圖片進行設定。
@media screen and ( min-width:750px){}
寬度不用固定值,用百分比。
浮動佈局使用flex;
圖片處理:height:auto;為了保證圖片的原始寬高比例,以至於圖片不失真。
.m-home img{
max-width:100%;
height:auto;
}
7、說一下jsonp的原理,你遇到過跨域嘛,如何解決,除了jsonp還有其他什麼方法。 (1)jsonp的原理
ajax請求受同源策略影響,不允許進行跨域請求,而script標籤src屬性中的連結卻可以訪問跨域的js指令碼,利用這個特性,服務端不再返回JSON格式的資料,而是返回一段呼叫某個函式的js程式碼,在src中進行了呼叫,這樣實現了跨域。 (2)jsonp的具體實現
比如訪問不同源的域www.practice-zhao.com
直接新增script標籤,標籤的src指向了另一個域www.practice-zhao.com下的remote.js指令碼
<script type="text/javascript">
function jsonhandle(data){
alert("age:" + data.age + "name:" + data.name);
}
</script>
<script type="text/javascript" src="http://www.practice-zhao.com/remote.js"></script>
這裡呼叫了跨域的remote.js指令碼,remote.js程式碼如下:
jsonhandle({
"age" : 15,
"name": "John",
})
動態的添加了一個script標籤,src指向跨域的一個指令碼,並且將js函式名作為callback引數傳入
<script type="text/javascript">
function jsonhandle(data){
alert("age:" + data.age + "name:" + data.name);
}
</script>
<script type="text/javascript">
$(document).ready(function(){
var url = "http://www.practice-zhao.com/student.php?id=1&callback=jsonhandle";
var obj = $('<script><\/script>');
obj.attr("src",url);
$("body").append(obj);
});
</script>
這裡動態的添加了一個script標籤,src指向跨域的一個php指令碼,並且將上面的js函式名作為callback引數傳入
JSONP將訪問跨域請求變成了執行遠端JS程式碼,服務端不再返回JSON格式的資料,而是返回了一段將JSON資料作為傳入引數的函式執行程式碼。
jQuery提供了方便使用JSONP的方式
$(document).ready(function(){
$.ajax({
type : "get",
async: false,
url : "http://www.practice-zhao.com/student.php?id=1",
dataType: "jsonp",
jsonp:"callback", //請求php的引數名
jsonpCallback: "jsonhandle",//要執行的回撥函式
success : function(data) {
alert("age:" + data.age + "name:" + data.name);
}
});
});
只要設定dataType為jsonp即可。
總結:JSONP是一種非正式傳輸協議,該協議的一個要點就是允許使用者傳遞一個callback或者開始就定義一個回撥方法,引數給服務端,然後服務端返回資料時會將這個callback引數作為函式名來包裹住JSON資料,這樣客戶端就可以隨意定製自己的函式來自動處理返回資料了。
JSONP只支援GET請求而不支援POST等其它型別的HTTP請求,它只支援跨域HTTP請求這種情況,不能解決不同域的兩個頁面之間如何進行JavaScript呼叫的問題,JSONP的優勢在於支援老式瀏覽器,弊端也比較明顯:需要客戶端和服務端定製進行開發,服務端返回的資料不能是標準的Json資料,而是callback包裹的資料。
(3)跨域的其他解決辦法
CORS 前後端協作設定請求頭,Access-Control-Allow-Origin等頭部資訊
普通跨域請求:只服務端設定Access-Control-Allow-Origin即可,前端無須設定,若要帶cookie請求:前後端都需要設定。
CORS是現代瀏覽器支援跨域資源請求的一種方式,全稱是"跨域資源共享"(Cross-origin resource sharing),當使用XMLHttpRequest傳送請求時,瀏覽器發現該請求不符合同源策略,會給該請求加一個請求頭:Origin,後臺進行一系列處理,如果確定接受請求則在返回結果中加入一個響應頭:Access-Control-Allow-Origin;瀏覽器判斷該響應頭中是否包含Origin的值,如果有則瀏覽器會處理響應,我們就可以拿到響應資料,如果不包含瀏覽器直接駁回,這時我們無法拿到響應資料。
CORS與JSONP的使用目的相同,但是比JSONP更強大,CORS支援所有的瀏覽器請求型別,承載的請求資料量更大,開放更簡潔,服務端只需要將處理後的資料直接返回,不需要再特殊處理。
伺服器端對於CORS的支援,主要就是通過設定Access-Control-Allow-Origin來進行的。如果瀏覽器檢測到相應的設定,就可以允許Ajax進行跨域的訪問。
使用HTML5中新引進的window.postMessage方法來跨域傳送資料
window.postMessage(message,targetOrigin) 方法是html5新引進的特性,可以使用它來向其它的window物件傳送訊息,無論這個window物件是屬於同源或不同源,目前IE8+、FireFox、Chrome、Opera等瀏覽器都已經支援window.postMessage方法。
接收2個引數
呼叫postMessage方法的window物件是指要接收訊息的那一個window物件,
該方法的第一個引數message為要傳送的訊息,型別只能為字串;
第二個引數targetOrigin用來限定接收訊息的那個window物件所在的域,如果不想限定域,可以使用萬用字元 * 。
相關推薦
今日頭條實習面試總結
1、實現陣列扁平化 陣列扁平化是指將一個多維陣列變為一維陣列 [1, [2, 3, [4, 5]]] ------> [1, 2, 3, 4, 5] (1)toString & split或者jion & split 呼叫陣列的toStr
今日頭條實習面試
一個 har 2個 倒數 python 什麽 隊列 存儲類型 varchar python GIL 給你a, b, c, d, e 5個網站,讓你爬 網站基本一樣,程序現成的,程序:run.py 只能處理一個網站的抓取工作 原來的url = a 要求性能較好 過
今日頭條前端面試總結
這些問題是我在頭條的一面面試中被面試官問到的,總結出來,希望對你有用 ^_^ 1.行標籤都有哪些?特點? img、span、a、sub、sup、em、i、b、strong 設定width、heigh不起作用 margin、padding垂直方
今日頭條C++後臺開發實習面試總結
一. 旋轉陣列中尋找某個target,leetcode原題。 二. 一個數組建立堆。 堆排序中,最初的步驟就是建立一個堆。之前在一些公司的筆試題上面見到一些與建堆過程相關的題目,因為當時對建堆過程有個誤解,所以經常選錯。之前一直以為是在完全二叉樹中依次插入序列中的元素,
今日頭條實習面經--20180509
最近好好看了一段時間書,投了一下今日頭條實習生散招,個人感覺散招比校招要簡單得多。下午大約2點開始,歷經一面,二面,三面好像有事,結果兩面之後讓我回來了。分享一下自己的經歷吧,一二面混在一起了。 今日頭條 1. 兩個連結串列相
今日頭條筆試面試大全
整理了一下今日頭條往屆筆試面試題,希望對大家有幫助: 超級有用的面試題:Java常見面試題 常見演算法面試題 資料庫常見面試題 作業系統常見面試題 C/C++常見面試題 大資料常見面試&n
今日頭條前端面試過程與面試題
頭條的面試業界最難,為準備頭條的面試,我刷了好幾天的題目,雖然最後被拒,但是在準備過程中知道了很多開發中被忽略的原理問題。這給我之後的面試打下了很好的基礎。 到了頭條總部,前臺給了一套題。三道簡答,三道程式設計題 簡答題: 什麼是函式節流,為什麼要使用函
今日頭條前端面試-2018 03 23
不出意外,今天頭條一面就被刷了。也正是這次面試,讓我真正明白了自己弱點在哪裡。哎,時間還有,好好學習天天向上!接下來就總結一下我遇到的這些問題吧。 整次面試40多分鐘,深深的受到了來自大佬的打擊。 (OS:找個實習真的難…)你有沒有拿到其他公司的offer沒有….這是
今日頭條Android面試
點選關注 非同步圖書,置頂公眾號每天與你分享 IT好書 技術乾貨 職場知識首先說一下,今日頭條的面試主要分為三輪到四輪,如果是旺季面三輪,首先是基礎面試,基本面試一般10個題左右,最近面試了一下今日頭條的移動Android資深工程師,記錄下。 第一面是北京的開發進行視訊面試
2017滴滴出行實習面試總結(測試崗,拿到offer)
fork:通過寫時拷貝機制建立子程序,子程序通過拷貝父程序的頁表與父程序共享相同的實體記憶體(被標記為只讀),當其中一方試圖修改實體記憶體上的資料時發生中斷,核心拷貝被修改頁並修改子程序的頁表使其指向新拷貝的一頁,之後對該頁上的資料進行修改不再產生中斷。因此可以理解成父程序和子程序擁有獨立的地址空間而相互不干
傻傻的實習面試總結
我的第一次實習面試——北森雲端計算(軟體測試實習) 評價:準備不充分,基礎知識不牢固,不會抓重點。說真的,我真的不太瞭解軟體測試。自己好low。 專業方面: ***邏輯題:下面問題是否存在邏輯問題。判斷6個數是否都在某個區間。 列舉了幾種情況,我不太明白。sad~沒搜
2018阿里巴巴演算法崗位實習面試總結(朋友的面試)
程式設計題 給一個圓盤分成N個扇形有M個顏色,要求同色不可以相鄰,文有多少種做法。 一面 他報的是演算法崗位是,所以問了一個演算法題,題目是這樣的:給你一個浮點數的集合,隨機取出兩個數做乘積,求乘積的最大值。 最笨的方法就是O(n*n)去做乘
今日頭條前端面試-2018.03.23
不出意外,今天頭條一面就被刷了。也正是這次面試,讓我真正明白了自己弱點在哪裡。哎,時間還有,好好學習天天向上!接下來就總結一下我遇到的這些問題吧。 整次面試40多分鐘,深深的受到了來自大佬的打擊。 (OS:找個實習真的難…) 你有沒有拿到其他公司的of
美團NLP實習面試總結
機會總是留給有準備的人 一 基本知識 1 python 解釋下裝飾器和生成器的作用以及用法 類的知識點,類與物件,三個輸出 2 java HashMap的實現原理 A
2017愛奇藝實習面試總結(搜尋開發,拿到offer)
一面-大概下午兩點多 1、 實習做得伺服器架構 2、 實習主要做了哪些事情 3、 實習開發的伺服器併發量多大?中有碰到過因為大量併發連線而造成的宕機嗎? 4、 TCP/IP 的瞭解,連線 3 次握手和關閉 4 次揮手, time_wait 的作用 5、 One loop per thr
2017今日頭條實習測試
題目一、 兩陣列找相同的元素-array 時間限制:C/C++語言 1000MS;其他語言 3000MS 記憶體限制:C/C++語言 65536KB;其他語言 589824KB 題目描述: 給兩個整數(int)陣列,輸出相同的元素。 輸入 給定兩個整型陣列[a1, a2,
CVTE 2018 C/C++實習面試總結
3.17號參加了一下武漢CVTE的C/C++實習面試,這也是本人蔘加的第一次技術面試,剛開始還是略顯緊張的,不過因為CVTE的面試官真的很耐心,人都挺好的,才讓我整個面試過程沒有太壓抑。下面簡單介紹一下一面和二面的面試官所提供的問題。具體的答案我就不貼上來了,希望大家可以自己
2018富途證券前端實習面試總結
剛剛面完富途,給我的感覺就是,他們的面試跟我之前面得完全不一樣。一上來就是問你計算機網路、作業系統、資料結構、C、JAVA這些理論課程會不會。這些東西本科的時候都學過,當初學的也很好,可是......我都過了這麼久沒看過了,上個研究生一下回到解放前了。然後,面試官給的結論
已拿到offer 2015年騰訊暑期實習面試總結(技術崗)
前言 本人2012屆,廣州某985高校軟體學院本科生一枚,技術方面絕對不能與我班大神們相比。於4月25日正式簽了offer,崗位是後臺開發,想想經過了簡歷篩選,筆試,三輪面試,自己還是挺幸運的,現在就把面試的細節和經歷和大家分享一下。 失敗經歷 從3月開始,聽聞各大公司會開始在學校進行暑期實習
騰訊實習面試總結
研究生第一次與面試官面對面的“面”試,也是迄今為止與offer離得最近的一次面試。可惜最後還是跪在了二面,敗在了細節和基礎。二面基本一直在寫演算法,演算法比較基礎,但又側面考察程式設計邏輯思維的嚴密性,memmove函式的實現,主邏輯並不複雜,主要考察對特殊情況的處理。由於