上一週筆試DD+BD(除編程題)總結(一)

上一週是真的忙活了一週,從週一到周天,整整一週,但是全部GG。
雖然GG但是真的有很多都不會。首先操作系統這周要好好看,尼瑪,真的那天讓我算時間片,我真的忘記了。

其實各個公司考查的重點都不太一樣,今天總結一下。

就是筆試期間做的一點記錄,儘量把疑惑今天都解開。
最重要的是,記住它們!!!!!!!!!!!!!!!!!!!!!!!!!!!!記住!!!!!!!!!!!!!它們!!!!!!!!!我這記性,哎,真的叫人難受。

滴滴

滴滴一上來的名字叫”智力題“然後看到的第一個題我就傻逼了。
0 5 27 119 495 2015 問我下一個。
我的天哪!!!!!
可以說是很崩潰了。
我想了一下 就是
0*4+5=5;
5*4+7=27;
27*4+11=119;
現在開始不對了
119*4+19=495;
495*4+35=2015;
我去!!!!!!!!
後來蒙了一個。
就2015*4+X。。。。
通項公式:an=2^(2n-1)-a^(n-11)-1……我的天哪!

然後就是概率論,數列,離散,數學歸納等。會寫的就寫了,但是基本全是蒙的,我蒙的,呵呵,真的沒對過,高中的時候,物理,答案是ACD,我蒙了個B,這事太多了。

現在認真起來:

1、算法信息不可還原的是?
7HAT DES RSA LZ77
->RSA
不可還原就是在加密之後無法還原爲原始密碼。
2、某計算機系統中有8臺打印機,由K個進程競爭使用,每個進程最多需要3臺打印機。該系統可能會發生死鎖的K的最小值是( )。

A.2
B.3
C.4
D.5
正確答案
C
答案解析
這種題用到組合數學中鴿巢原理的思想,考慮最極端情況,因爲每個進程最多需要三臺打印機,如果每個進程已經佔有了兩臺打印機,那麼只要還有多餘的打印機,那麼總能滿足達到三臺的條件。所以,將8臺打印機分給K個進程,每個進程有兩臺打印機,這個情況就是極端情況,K爲4。
3、編程題:
大概是 數字對2,3,5都可以整除,求符合條件的第n個數。
反正我每次寫編程題,都是事後諸葛亮。
真的不難,恐怕 我有毒吧。。。。。。。。。

#include<iostream>
using namespace std;
int main(){
    int n,m,i=1,j=1;
    cin>>n;
    while(j++){
    m=j;
        while(m%2==0){
            m/=2;
        }
        while(m%3==0){  
            m/=3;
        }
        while(m%5==0){  
            m/=5;
        }
        if(m==1||m==2){
            if(n==1){
                cout<<1;
                return 0;
            }
            i++;
            if(i==n){
                break;
            }
        }
        else{
        continue;
        }
    }
    cout<<j<<endl;;    
    return 0;

}

還有一個記不住。

盛大遊戲

這個就是放棄治療了,我投的WEB,後來盛大的WEB取消了把我分到JAVA,我難過,我痛苦啊,憑着大三學過一學期JAVA的經驗硬着頭皮把選擇寫完,到了編程我一看,哎呦,不難。本想寫,但是!!!只能用java,難過,本想C/C++也是可以的呢。

百度

這個的GG真的煩,學校的網絡一晚上不停的掉,編程題直接上不去。就把前段答了,當然,我看了編程題,有網我也不會寫。。。不是我放棄治療,真的是能力所致,我寫不出來。真的好難。但是舍友運維通過了,去面試了,好像一面掛掉了。哎,大家加油吧!!!

這個是真的很細!!!
1、Math.max();

返回最大數。

var result1=Math.max();//-Infinity
var result=Math.max(5,7);//7
var result2=Math.max(1,3,5.6,2);//5.6
var result2=Math.max(1,3,5.6,2,"1");//5.6
//錯誤的
var str=[1,2,3,4,5,1,3,9];
var result1=Math.max(str)//NAN
var result2=Math.max(1,3,5.6,2,"d");//NAN

var num=new Array(1,2,3,4,5);
var result1=Math.max(num);//NAN

2、關於this指針的

var Test ={
        foo:"test",
        func:function () {
            var self=this;
            console.log(this.foo);
            console.log(self.foo);
            (function () {
                console.log(this.foo);
                console.log(self.foo);
            })();
        }
    };
    Test.func();

我一開始的答案是

test
test
test
test

我應該是該不太理解這個立即執行函數吧。
正確答案:

筆試疑惑.html:25 test
筆試疑惑.html:26 test
筆試疑惑.html:28 undefined
筆試疑惑.html:29 test

那麼就是在立即執行函數裏面的this.foo了。這個是由於在立即執行函數中,產生了閉包,內部無法訪問到外部的this,所以這個時候的this指向的window對象,則輸出爲undefined,而self.foo有值是因爲在閉包函數外面this給到了self。
參考:https://segmentfault.com/q/1010000011133004/a-1020000011133254

3、關於return的疑惑:

function Test(){
        var x=0;
        return function(){
            console.log(x++);
        }
    }
    var f1=Test(1),f2=Test(1);
    f1(1);f1(1);f2(1);

答案:010
4、關於數組

var arr=[1,2,3];
    arr.shift();
    arr.push();
    arr.unshift();
    var ne=arr.concat([1,2]);
    console.log(ne);

答案:[2, 3, 1, 2];
說一下,arr.shift();是去掉數組第一個元素。他的返回值是去掉的第一個元素。而 arr.unshift();是從數組的開頭添加一個元素。他的返回值是新數組的長度。arr.push();會在數組的末尾插入元素並且返回新數組的長度。arr.concat();他裏面是參數不論是什麼,都是返回一個數組,作爲一個數組元素存在。而[1,2]會添加到當前的數組中。

5、關於定時器

for(var i=1;i<=3;i++){
   setTimeout((function(a){
       console.log(a);    
   })(i),0);  
};

答案:1,2,3
並不是像這樣的4,4,4

for(var i=1;i<=3;i++){
   setTimeout(function(){
       console.log(i);    
   },0);  
 };

原因:在第二個的4,4,4是Javascript事件處理器在線程空閒之前不會運行。所以等for循環結束之後執行定時器,這個時候i已經變爲4了。而第一個就是爲了改變這樣的現狀 ,在定時器中加入了立即執行函數,所以它的值是正確的。

6、鄰接矩陣
大二的時候,真的算法的學的挺好的,誰知道一年沒理這玩意就什麼都不會了。
鄰接矩陣就是可以用來表示圖的一個矩陣。
具體瞭解:百度一下
這裏重點兩點:1、對稱的是無向的。2、這他媽的真的很容易理解。
0 0 1 1 1
0 0 1 1 0
1 1 0 1 0
1 1 1 0 1
1 0 0 1 0
求頂點和邊數?
ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,ORZ,5,14。出度度入度就不說了,我下次要是記不住就抽自己,真他媽的豬腦子!!!
7、中綴式->後綴式

規則:從左到右遍歷中綴表達式的每個數字和符號,若是數字就輸出,即成爲後綴表達式的一部分;若是符號,則判斷其與棧頂符號的優先級,是右括號或優先級低於找頂符號(乘除優先加減)則棧頂元素依次出找並輸出,並將當前符號進棧,一直到最終輸出後綴表達式爲止。參考原文

可以說是非常清晰了。
中綴式:a*(b-(c+d))
後綴式->abcb+-*

8、文件權限
10個字符確定不同用戶能對文件幹什麼

  • 第一個字符代表文件(-)、目錄(d),鏈接(l)

  • 其餘字符每3個一組(rwx),讀(r)、寫(w)、執行(x)

  • 第一組rwx:文件所有者的權限是讀、寫和執行

  • 第二組rw-:與文件所有者同一組的用戶的權限是讀、寫但不能執行

  • 第三組r–:不與文件所有者同組的其他用戶的權限是讀不能寫和執行

也可用數字表示爲:r=4,w=2,x=1 因此rwx=4+2+1=7

  • 1 表示連接的文件數

  • root 表示用戶

  • root表示用戶所在的組

  • 1213 表示文件大小(字節)

  • Feb 2 09:39 表示最後修改日期

  • abc 表示文件名
    可以說是比較難記了。
    9、標準輸入輸出的重定向
    shell上:
    0表示標準輸入
    1表示標準輸出
    2表示標準錯誤輸出

    默認爲標準輸出重定向,與 1> 相同
    2>&1 意思是把 標準錯誤輸出 重定向到 標準輸出.
    &>file 意思是把 標準輸出 和 標準錯誤輸出 都重定向到文件file中。
    參考原文

10、排序最快的?
快速排序吧,畢竟名字在這呢!

總結一下,百度其實我的選擇湊合,編程一個沒出來就很悲傷了。

騰訊

emmmmmmmmmmmmmmmmmmmm,今天就先到這裏,舍友睡了,我實在不敢再不睡了。哈哈哈!!!!!!!!!!!!!!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章