ある会社の筆記試験問題(1)

12369 ワード

前言
先週、幸運にもある会社に面接に誘われました.面接の結果は思わしくないですが、総括するプログラマーにとって、この会社の面接問題はまとめてからでないと進歩しません.
本文
JavaScriptでStringタイプのデータをどう判断しますか?具体的な関数を書いてください.
方法1:
function isString(str) {
  return typeof str === 'string'
}
  • この方法は最も分かりやすいが、new String()によって作成された文字列が正しく判断できないという致命的な欠点がある.
  • new String()によって作成した文字列はtypeofを使用して得られたのはObject
  • である.
  • 改善方法は、次のような方法である.
    方法二:
    function isString(str) {
      return str instanceof String || typeof str === 'string'
    }
    
    方法三:
    function isString(str) {
      return str.constructor === String
    }
    
    方法四:
    function isString(str) {
      return Object.prototype.toString.call(str) === '[object String]'
    }
    
    DOM動作において、ノードの追加、ノードの検索、ノードの削除、代替、ノードの複製、ノードの作成方法
    //             
    fatherNode.appendChild(newNode)
    //                 
    fatherNode.insertBefore(newNode, existingNode)
    
    //    
    document.getElementById('idName')
    document.getElementsByClassName('className')
    document.getElementsByTagName('tagName')
    document.querySelectorAll('selector')
    
    //    
    fatherNode.removeChild(removeNode)
    
    //    
    fatherNode.replaceChild(newNode, oldNode)
    
    //    ,deep true       , false       
    node.cloneNode(deep)
    
    //    
    document.createElement('tagName')
    
    javaScriptの中でごみの回収の構造とメモリの管理を簡単に述べます.
  • ゴミ回収(GC)処理プログラム実行中に発生したゴミ
  • は、関数のスコープで関数が実行されたとき、関数で宣言された局部変数は、ゴミ回収
  • として扱われます.
  • グローバル変数は、プログラムが終了する前にゴミ回収として扱われます.
  • オブジェクトは外部のいずれの変数にも参照されなくなり、このオブジェクトはゴミ回収として扱われます.
  • メモリ管理は三つの段階に分かれています.
  • メモリ割り当て:変数、関数、オブジェクトを説明するとき、システムは自動的に割り当てメモリ
  • になります.
  • メモリ使用:変数、関数などを使用した操作
  • メモリのリリース:使用済みメモリのリリース(ゴミ回収メカニズム)
  • メモリオーバーフローとメモリ漏れは何ですか?
  • メモリオーバーフロー:プログラム実行時に発生したエラーで、プログラム実行に必要なメモリが残メモリを超えるとメモリオーバーフローのエラーが発生します.
  • メモリ漏れ:プログラム実行時、占有メモリが即時に釈放されなくなり、メモリ漏れが多すぎるとメモリオーバーフローを引き起こし、よくあるメモリ漏れは以下の3種類を含む.
  • 意外なグローバル変数とは、varconstletを使用して宣言されていない変数
  • を意味する.
  • タイミングクリアされていないタイマーまたはコールバック関数
  • が即時に解放されていないクローズド
  • ページの性能を向上させる方法
  • ネットワーク要求の回数を減少させ、精霊図技術
  • ローカルキャッシュを合理的に使用する
  • 画像を使って怠惰にロードし、いくつかの画像の代わりにフォントアイコンを使う
  • .
  • CDNを使用してリソースをロードする
  • ページにおけるDOM動作を低減し、DOMを操作することは、できるだけidセレクタ
  • を使用することである.
    ・・・
    クロスドメインとは何ですか?よくあるクロスドメインの解決方法は何ですか?
  • クロスドメインとは、ブラウザが他のサイトのスクリプトを実行できないことを意味する.これはブラウザの同ソース戦略によってもたらされたもので、JavaScriptに対するブラウザのセキュリティ制限です.
  • 一般的なクロスドメイン解決方法
  • は、jsonを通じて、
  • にまたがります.
  • document.doman+iframeクロスドメイン
  • locations.hash+iframe
  • window.name+iframeクロスドメイン
  • postMessageクロスドメイン
  • クロスドメインリソース共有(CORS)
  • nginxエージェントは、クロスドメイン
  • nodejs中間部品エージェント
  • Basktworkプロトコルクロスドメイン
  • こんなに多くのクロスドメイン解決案は、私はjsonしかできません.難しすぎます.
    ajaxの原理と長所と短所
  • ajaxの原理は、XMLHttpRequestオブジェクトを通じてサーバに非同期要求を送信し、サーバからデータを取得し、その後、javaScriptでDOMを操作してページを更新し、ajaxがネットワーク要求を送信するステップは以下の通りである.
  • は、XMLHttpRequestを用いてネットワーク要求オブジェクトxhr
  • を作成する.
  • は、ネットワーク要求を設定する方法を含むネットワーク要求を送信する準備ができ、要求アドレスは、同期
  • であるかどうか.
  • は、ネットワーク要求を送信し、要求方式がpostである場合、着信要求パラメータ
  • が必要である.
  • 処理サーバからの要求データ
  • ajaxのメリット
  • 更新データがない
  • 非同期サーバ通信
  • フロントエンドとバックエンド負荷バランス
  • は標準に基づいて広く支持されています.
  • インターフェースとアプリケーション分離
  • ajaxの欠点
  • は、ブラウザのリターバック機構を破壊しました.
  • は、より多くのデータとサーバ論理
  • を露出している.
  • は検索エンジンのサポートが弱いです.
  • URLとリソースの位置付けに違反しました.
  • jQueryにはそのいくつかのセレクタがあります.
    jQueryには9種類のセレクタが含まれています.
  • 基本セレクタ
  • レベルセレクタ
  • 拡張タイプ基本セレクタ
  • コンテンツセレクタ
  • 可視セレクタ
  • 属性セレクタ
  • サブエレメントセレクタ
  • フォームセレクタ
  • フォームオブジェクト属性セレクタ
  • ()の使い方
  • $(html)、パラメータはHTMLコードの一部であり、ノードオブジェクト
  • を作成する.
  • $(selector)、パラメータはセレクタであり、ページの要素
  • を選択する.
  • $(function)、パラメータは、DOMがロードされた後に関数が実行される関数であり、$(document).ready()
  • に相当する.
    this指向問題
    //              
    var name = 'Tom'
      var obj = {
        name: 'Jerry',
        bar: function () {
          var name = 'Spike'
          console.log(this.name)
        }
      }
    
    var f1 = obj.bar
    f1()        //Tom
    obj.bar()   //Jerry
    
    //              
    var obj = {
      name: 'Tom',
      getName() {
        console.log(this.name)
      }
    }
    var foo = obj.getName
    //    undefine   ,    window             name   ,      
    foo()	//''
    
    手书きの简単なのは闭锁のコードを含みます.
    function foo() {
      var a = 10
        return function() {
          return a
        }
    }
    var f = foo()
    console.log(f())	//10
    
    v-modelの役割
  • は、フォーム要素上で双方向データバインディング
  • を作成するために使用される.
  • は、カスタム入力コンポーネント上で双方向データバインディング
  • を使用する.
    Vue-Routerナビゲーションのフックはどのような種類がありますか?
  • グローバルフロントガードbeforeEach
  • グローバルバックフックafterEach
  • ルーティング・独り占めのガードbeforeEnter
  • コンポーネント内のガードbeforeRouteEnterbeforeRouteUpdatebeforeRouteLeave
  • グローバル解析ガードbeforeResolve
  • 注:本人の能力に限られていますので、問題の答えは完全とは保証されません.ご指摘をお願いします.