天天看點

2018網易線上筆試(Java方向)不過結果如何,過程就是收獲希望好運一直伴随我~

前幾天收到了網易的郵件,告訴我通過了履歷篩選,獲得了線上筆試的資格~~~開森開森,嘿嘿,,傳說中的網易隻喜歡985的履歷,我以為我肯定沒機會參加筆試呢,,之後又聽說去年網易有30000多人參加線上筆試,吓得我腦子裡隻想着“重在過程,重在體驗”,嗯~

今天下午心情超級差,被班裡的事情弄得心煩意亂,一團怒火心中燒, 不過也是以頭腦特别清醒,做題狀态還不錯,腦子沒有變呆滞。

20道選擇題部分考點

  • 計算機網絡中的IP位址的子網路遮罩,子網個數
  • 交換機在TCP/IP協定中屬于哪層,它有什麼作用
  • 字首表達式轉換為字尾表達式
  • 連結清單:往雙向連結清單的兩個節點中再插入一個節點
  • java題考了好幾個,例如Long類型的變量和11是不是相等,繼承方面的知識,類定義後用其子類執行個體化,try中包含return是否還會執行finally等等
  • 剩下的想不起來了…

3道程式設計題

我覺得三道題都是考對數組的操作,三道題的資料我分别通過20%, 70%, 90%,按通過率得分~ (最後一道題是暴力寫的,居然過了90%,嘿嘿)

由于題目不支援粘貼,我就沒記住題目了,大家可以通過我的代碼猜猜看考得題目是什麼~不過牛客網應該很快就會将題目放出來了吧

A.橡皮泥捏斑馬

任意位置截斷字元串後逆轉一下,可以操作任意次,使得最大相間的wb子串最長,求最長的子串長度

輸入 wwb 輸出 3

輸入 wbwbw 輸出 5

//
// Created by jal on 18-9-8.
//
#include <bits/stdc++.h>
using namespace std;
int main(){
    string s;
    cin >> s;
    int w = ,b = ;
    for(auto c : s){
        if(c == 'w'){
            w++;
        }
        else{
            b++;
        }
    }
    int t = min(w,b)*;
    if(s.size() > t)t++;
    cout <<t <<endl;
}
           
B.買房

n個房,k個房已經有人入住。

一個人想買一件空房,但又希望這個空房相鄰兩側的房子都有人住,求符合要求的空房數的最小值和最大值。(最小數似乎總是為0,因為無論n k為多少,總有一種方案使這個人買不到合适的房子)

//
// Created by jal on 18-9-8.
//

#include <bits/stdc++.h>
using namespace std;
int main(){
    int t;
    cin >> t;
    while(t--){
        int n,k;
        cin >> n >> k;
        if(n <= ){
            cout << "0 0" << endl;
            continue;
        }

        if(k == n){
            cout << "0 0" << endl;
            continue;
        }

        if(k == n-){
            cout << "0 1" << endl;
            continue;
        }

        cout << "0 " << min(k-, n-k) << endl;
    }
}
           
C.社團主席選舉

投票問題,購買别的選手的票來支援自己的選手,求最小花費

//
// Created by jal on 18-9-8.
//

#include <bits/stdc++.h>
using namespace std;

struct ZJ{
    int x,y;
    bool operator<( const ZJ that)const{
        return y < that.y;
    }
};
int get_k(int * a,int n){
    int ret = ;
    for(int i = ; i <= n; i++){
        if(a[i] >= a[]){
            ret++;
        }
    }
    return ret;
}
int main(){
    int n,m;
    cin >> n >> m;
    ZJ a[n+];
    int c[m+];
    for(int i =  ; i <= m; i++){
        c[i] = ;
    }
    for(int i = ; i <= n; i++) {
        cin >> a[i].x >> a[i].y;
        c[a[i].x]++;
    }

    long long t = ;
    while(get_k(c, m) > ){
        int temp =;
        int minn = +;
        for(int i = ; i <= n; i++){
            if(a[i].x == )continue;
            if(a[i].y < minn){
                minn = a[i].y;
                temp = i;
            }
        }
        c[]++;
        c[a[temp].x]--;

        t += a[temp].y;
        a[temp].x = ;
    }
    cout << t << endl;
}
           

兩道問答題

  • 繼承和實作的差別

    我的回答:

    1.繼承是指類的繼承,用extends關鍵字,繼承是唯一的,隻能繼承一個類。類A通過繼承另一個類B,可以得到類B的所有public方法和屬性,如果類B是抽象類,那類A需要實作類B的所有抽象方法,如果沒有全部實作,那類A要将自己變成抽象類,加關鍵字abstract。此外,類A的構造函數中需要先顯示調用類B的構造函數。如果類A中繼承了類B的方法和屬性,而類A本身也擁有與其同名的方法和屬性,那麼類A将用自己的方法和屬性覆寫類B中的方法和屬性。

    2.實作是指實作接口的方法,用implements關鍵字,接口可以有多個,想要實作多個接口,可以用逗号隔開。類A如果通過implements關鍵字來實作接口B,那類A必須實作所有接口B中的抽象方法,如果沒有全部實作,那類A要将自己變成抽象類,加關鍵字abstract

  • 集合類為什麼沒有實作cloneable和serialization接口

    我的回答:

    clone是實作類的拷貝,serialization是實作類的序列化。

    cloneable和serialization接口中沒有抽象方法,是以集合類不需要實作這兩個接口。這兩個接口的存在,隻是為了告訴程式員繼承了這兩個接口的類,可以具有拷貝和序列化的功能,而不是需要來實作它,隻是起标示作用。

不過結果如何,過程就是收獲

希望好運一直伴随我~