どこに行って面接して総括します


一昨日、どこかのキャンパスの募集の面接に参加して、光栄なのは第一面で切りました.私の面接は重大なコンピュータの卒業した学生ですが.もともと、筆記試験に合格するとは思っていませんでしたが、面接も筆記試験の問題の山にかかっていて、この2、3日よく検討して、少しまとめました.
一、テーマの中で1つの表をあげて、中は両親の血液型と対応する子供が現れる可能性のある血液型で、JavaScriptで機能を実現することを要求します:両親の血液型によって子供が現れる可能性のある血液型を判断します;親と子の血液型によって、子が実子かどうかを判断する.
このタイプの最も基本的な書き方はif-elseで、if-elseが多くなったときにswitch-caseを使って代用できることも知っていますが、caseが多くなったときにハッシュテーブルを使って解決することを知りませんでした.面接官はハッシュ表で解決するように注意したが、私は確かに知らなかったし、その場で実現できなかった.この2日間の学習結果を添付しましょう.JavaScriptを使用して、この問題に対するハッシュ表を実現します.
function HashTable(){
    this.table = new Array(137);
    this.simpleHash = simpleHash;
    this.showDistro = showDistro;
    this.put = put;
    this.get = get;
}
function put(parentType,childPossible,childImpossible){
    var pos = this.simpleHash(parentType);
    this.table[pos] = {};
    this.table[pos]['childPossible'] = childPossible;
    this.table[pos]['childImpossible'] = childImpossible;
}
function get(parentType,childType){
    if(childType === undefined){
        return this.table[this.simpleHash(parentType)]['childPossible'];
    }else{
        var index = this.table[this.simpleHash(parentType)]['childPossible'].indexOf(childType);
        if(index == -1){
            return '           ';
        }else{
            return '        ';
        }
    }
}
function simpleHash(parentType){
    var total = 0;
    for(var i=0; ireturn total % this.table.length;
}
function showDistro(){
    var n=0;
    for(var i=0; i < this.table.length; ++i){
        if(this.table[i] != undefined){
            console.log(i + ': ' + this.table[i]['childPossible'] + ' + ' + this.table[i]['childImpossible']);
        }
    }
}
var hTable = new HashTable();
hTable.put('O,O','O','A,B,AB');
hTable.put('A,O','A,O','B,AB');
hTable.put('A,A','A,O','B,AB');
hTable.put('A,B','A,B,AB,O','————');
hTable.put('A,AB','A,B,AB','O');
hTable.put('B,O','A,O','A,AB');
hTable.put('B,B','B,O','A,AB');
hTable.put('B,AB','A,B,AB','O');
hTable.put('AB,O','A,B','O,AB');
hTable.put('AB,AB','A,B,AB','O');
hTable.showDistro();

二、プレースホルダ置換問題、これは問題ありません.実現方法はたくさんあります.結果markを貼ると、原題と少し違います.原題は対象key-valueマッチングと誤解されやすいです.
var str = 'af%sffio%sbfas%sfds%sjj%sf';
var arr = ['  ','  ','   ','  ','  ','  ','  '];

function placeholder(str,arr){
    var strLen = str.match(/%s/g).length,
        arrLen = arr.length;
    if(strLen < arrLen){
        var tempArr1 = [], tempArr2 = [];
        for(var i=strLen-1; ifor(var j=0;j1;j++){
            tempArr2.push(arr[j]);
        }
        tempArr2.push(tempArr1);
        arr = tempArr2;
    }else if(strLen > arrLen){
        for(var k=arrLen; k'null');
        }
    }

    var strArr = str.split('%s');
    var result = [];
    for(var h=0;h1]);

    console.log(result.join(''));

}
placeholder(str,arr);

三、オペレーティングシステムのいくつかのものは分かりますか?私の答えはきっとxxxで、これも1つの挂け点でしょう.
四、先端について話しましょう.箱の模型について話しましょう.「blablabla......」;もう一度事件を話しましょう、「blablabla......」;これらはあなたが自分で体得したのか、それとも書記が降りてきたのか(目つきから彼が私が教科書を背負っていると感じているような気がします)、「blablabla......」;フロントエンドのエンジニアリングに対する理解について話しましょう.「blablabla......」、ここも掛け点のはずです.
五、残りはすべていくつかの他の问题を挿入して、例えば自动化の専门はすべてどれらの课程を学んで、どうして重庆から西安に来て仕事を探して、すべてどのいくつかの他の単位を面接したことがあって、その笔记试験のテーマは私达のとどんな区别があります.
六、何か私に聞く必要があることがありますか.「blablabla......」、ある人は実践が強いが、理論の基礎がなく、ある人は基礎が強いが、実践したことがないので、帰ってデータ構造などのコンピュータの基礎課程をよく勉強することをお勧めします.
結果:切ります.
付録:この2日間の学習中にJavaScriptを使用して実現された循環チェーンテーブルによるジョセフ問題の解決(コード組織の最適化が必要):
function Node(element,index){
    this.index = index;
    this.element = element;
    this.next = null;
}
function List(element,index){
    this.head = new Node(element,index);
    this.head.next = this.head;
    this.insert = insert;
    this.find = find;
    this.remove = remove;
    this.findPrevious = findPrevious;
    this.display = display;
}
function find(element){
    var currNode = this.head;
    while(currNode.element != element){
        currNode = currNode.next;
    }
    return currNode;
}
function insert(newelement,element,index){
    var newNode = new Node(newelement,index);
    var currNode = this.find(element);
    newNode.next = currNode.next;
    currNode.next = newNode;
}
function findPrevious(element){
    var currNode = this.head;
    while(currNode.next.element != element){
        currNode = currNode.next;
    }
    return currNode;
}
function remove(element){
    var prevNode = this.findPrevious(element);
    prevNode.next = prevNode.next.next;
}
function display(){
    var currNode = this.head;
    while((currNode.next != this.head) && (currNode.next != currNode)){
        console.log(currNode.element + '
'
); currNode = currNode.next; } console.log(currNode.element); } var nameList = ['A','B','C','D','E','F','G','H','I','J']; var loopList = new List(nameList[0],1); for(var i=1; i1],i+1); } var currNode = loopList.head; for(var j=1;j<4;j++){ currNode = currNode.next; if(j == 3){ if(currNode.next != currNode){ loopList.remove(currNode.element); j = -1; }else{ console.log(currNode.element); break; } } }