日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2017面试题1

發布時間:2024/4/13 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2017面试题1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

AMD 和 CMD 的區別有哪些?

區別:

1. 對于依賴的模塊,AMD 是提前執行,CMD 是延遲執行。不過 RequireJS 從 2.0 開始,也改成可以延遲執行(根據寫法不同,處理方式不同)。CMD 推崇 as lazy as possible.

2. CMD 推崇依賴就近,AMD 推崇依賴前置。看代碼:

// CMD
define(function(require, exports, module) {
var a = require('./a')
a.doSomething()
// 此處略去 100 行
var b = require('./b') // 依賴可以就近書寫
b.doSomething()
// ...
})

// AMD 默認推薦的是
define(['./a', './b'], function(a, b) { // 依賴必須一開始就寫好
a.doSomething()
// 此處略去 100 行
b.doSomething()
...
})

雖然 AMD 也支持 CMD 的寫法,同時還支持將 require 作為依賴項傳遞,但 RequireJS 的作者默認是最喜歡上面的寫法,也是官方文檔里默認的模塊定義寫法。


3. AMD 的 API 默認是一個當多個用,CMD 的 API 嚴格區分,推崇職責單一。比如 AMD 里,require 分全局 require 和局部 require,都叫 require。CMD 里,沒有全局 require,而是根據模塊系統的完備性,提供 seajs.use 來實現模塊系統的加載啟動。CMD 里,每個 API 都簡單純粹


4. 還有一些細節差異,具體看這個規范的定義就好,就不多說了。

?

MVC,MVP 和 MVVM

mvc?

  • View 傳送指令到 Controller
  • Controller 完成業務邏輯后,要求 Model 改變狀態
  • Model 將新的數據發送到 View,用戶得到反
  • 接受用戶指令時,MVC 可以分成兩種方式。一種是通過 View 接受指令,傳遞給 Controller。另一種是直接通過controller接受指令。

    ?

    MVP

    模式將 Controller 改名為 Presenter,同時改變了通信方向。

    1. 各部分之間的通信,都是雙向的。

    2. View 與 Model 不發生聯系,都通過 Presenter 傳遞。

    3. View 非常薄,不部署任何業務邏輯,稱為"被動視圖"(Passive View),即沒有任何主動性,而 Presenter非常厚,所有邏輯都部署在那里。

    ?

    MVVM

    模式將 Presenter 改名為 ViewModel,基本上與 MVP 模式完全一致。

    唯一的區別是,它采用雙向綁定(data-binding):View的變動,自動反映在 ViewModel,反之亦然。Angular?和?Ember?都采用這種模式

    5?JavaScript內存管理

    JS中內存的分配和回收都是自動完成的,內存在不使用的時候會被垃圾回收器自動回收。

    簡單的說,js是這樣管理內存的:

    ?找出那些不再繼續使用的變量,然后釋放其中占用的內存。為此,垃圾收集器會按照固定的時間間隔(或代碼執行中預設的收集時間),周期性的執行這一操作.

    對垃圾回收算法來說,核心思想就是如何判斷內存已經不再使用了。下面介紹兩種常見瀏覽器的垃圾回收算法。

    1 標記清除 (主流做法)

    2?引用計數法,跟蹤記錄每個值的被引用次數。

    ?

    6?JS中Null與Undefined的區別

    在JavaScript中存在這樣兩種原始類型:Null與Undefined。

    Undefined類型只有一個值,即undefined。當聲明的變量還未被初始化時,變量的默認值為undefined。
    Null類型也只有一個值,即null。null用來表示尚未存在的對象,常用來表示函數企圖返回一個不存在的對象。

    ?7 閉包是什么?閉包如何避免內存循環引用。

    閉包是在某個作用域內定義的函數,它可以訪問這個作用域內的所有變量。

    參考?http://blog.csdn.net/liangklfang/article/details/48543917

    方法一、主動設置js對象element為空,打破循環引用

    function assignHandler()

    {
    ? ?var element=document.getElementById("div1");
    ? ?var id=element.id;
    ? ?element.οnclick=function() //element的onclick引用了函數funciton,function通過閉包引用了element,照成循環引用
    ? ?{
    ? ? ? alert(id+element+sex);
    ? ? }
    ?/*閉包可以監聽外部變量的變化,所以這里把element=null,也就是說外部這個變量相當于不存在了,雖然賦值是在閉包后面,閉包也能夠檢測到!所以匿名函數不會有外部的DOM對象的引用,不會內存泄漏*/
    ? var sex="female";
    ? element=null;

    }

    ?

    方法二、通過添加另外一個閉包來避免JS對象和DOM對象之間的循環引用

    ?window.οnlοad=function outerFunction()
    {
    ? var anotherObj=function innerFunction()
    ? ?{
    ? ? ? ? ? ? alert("I have avoided the leak!");
    ? ?}
    //通過另外一個閉包來避免JS對象和DOM對象之間的循環引用
    ? function anotherInnerFunction()
    ? ?{
    ? ? ? ? var obj=document.getElementById("div1");
    ?//DOM對象引用了anotherObj函數,但是anotherObj函數無法引用DOM對象
    ? ? ? ? obj.οnclick=anotherObj;
    ? };
    ? anotherInnerFunction();
    }

    方法三、通過添加另一個函數來避免閉包本身,進而阻止內存泄漏

    window.οnlοad=function()
    {
    ? ? ? ? var obj=document.getElementById("div1");
    ? ? ? ? obj.οnclick=doesNotLeak;
    }
    //該函數無法訪問上面匿名函數中間的obj對象,從而可以阻止內存泄漏!
    function doesNotLeak()
    {
    ? ?alert("我已經阻止內存泄漏了!");
    }

    7?解釋下浮動和它的工作原理?清除浮動的技巧

    浮動元素脫離文檔流,不占據空間。

    1、<div style="clear:both;"></div>

    2、.clearfix:after?{content:".";?display:block;?height:0;?visibility:hidden;?clear:both;?}???

    .clearfix?{?*zoom:1;?}?//為了適配ie6??
    3,設置`overflow`為`hidden`或者auto

    8 iframe iframe是一種框架,也是一種很常見的網頁嵌入方式,零度今天給大家分析分析它的優缺點。
    iframe的優點:

    1.iframe能夠原封不動的把嵌入的網頁展現出來。
    2.如果有多個網頁引用iframe,那么你只需要修改iframe的內容,就可以實現調用的每一個頁面內容的更改,方便快捷。
    3.網頁如果為了統一風格,頭部和版本都是一樣的,就可以寫成一個頁面,用iframe來嵌套,可以增加代碼的可重用。
    4.如果遇到加載緩慢的第三方內容如圖標和廣告,這些問題可以由iframe來解決。
    iframe的缺點:

    1.會產生很多頁面,不容易管理。
    2.iframe框架結構有時會讓人感到迷惑,如果框架個數多的話,可能會出現上下、左右滾動條,會分散訪問者的注意力,用戶體驗度差。
    3.代碼復雜,無法被一些搜索引擎索引到,這一點很關鍵,現在的搜索引擎爬蟲還不能很好的處理iframe中的內容,所以使用iframe會不利于搜索引擎優化。
    4.很多的移動設備(PDA 手機)無法完全顯示框架,設備兼容性差。
    5.iframe框架頁面會增加服務器的http請求,對于大型網站是不可取的。
    分析了這么多,現在基本上都是用Ajax來代替iframe,所以iframe已經漸漸的退出了前端開發。

    求y 和 z 的值
    var x =1
    var y = 0
    var z = 0
    function add(n){n=n+1}
    y=add(x)
    function add(n){n=n+3}
    z=add(x)

    underfined

    轉載于:https://www.cnblogs.com/y896926473/p/6651884.html

    總結

    以上是生活随笔為你收集整理的2017面试题1的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。