1. 程式人生 > >今日頭條實習面試總結

今日頭條實習面試總結

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函式的實現,主邏輯並不複雜,主要考察對特殊情況的處理。由於