天天看點

愛奇藝2018春招-大資料方向筆試分析

作為一名普通的大三學生,第一次做筆試,是以想發表一些對愛奇藝筆試的看法**

單選題(45分)

因為是大資料方向,是以單選題考了很多大資料結構的題目,如mapreduce,Hadoopde等,作為一個隻上課大資料課的學生來說,我真的對這些一點不知道,還好考試前在牛客刷了點其他公司大資料方向的題,有點印象感覺瞎蒙也能對幾道,除此之外,還考了棧,排序,四次揮手等簡單的基礎知識,我的基礎知識還算比較牢固,不至于太差。

程式設計題(60分)

程式設計題總共有2道,都是很基礎的數學題目,并沒有需要用到特殊結構的題

程式設計題1:

1.給予一個數字n(n≤1000000),然後輸入n個資料(1≤資料≤1000000),尋找N個數中唯一一個不同的數字,傳回該數字的位置,

思路:一開始想設個1000000大小的數組,然後發現數組太大了… ̄□ ̄||

突然就想到可以在輸入資料的時候就進行比較,為了發現不同的兩個數字中哪個是正常的數字,是以需要讀入第三個資料,需要的數組大小為3,友善起見我就直接設為10了。

基本思路是當 i != i-1時,讀入下一個元素并記錄下一個 i 到sign中,然後分情況讨論輸出 i 或 i -1 或 i - 2,其中 i 的情況是不同的數位于末尾,i -1的情況讀入的第三個數與第二個數不同,i - 2的情況是讀入的第三個數與第二個數相同

#include <iostream>
using namespace std;

int main()
{
    int n;
    cin >> n;
    int w[];
    int sign = , flag = ;
    for (int i = ; i <= n; i++)
    {
        cin >> w[i%3];
        sign = i;
        if (flag == ) break;
        if ((w[i%3] != w[(i-)%3])&(i>)) flag=;
    }
    if ((sign == n)&(w[sign % ] != w[(sign - ) % ]))
    {
        cout << sign;
    }
    else if (w[sign%3] == w[(sign-)%3])
    {
        cout << sign-;
    }
    else cout << sign - ;
}
           

程式設計題2

有三個整數X,Y,Z,要求進行若幹次操作使X,Y,Z相等,操作有兩種

1.從X,Y,Z中選擇兩個數都加1

2.從X,Y,Z中選擇一個數加2

求最少需要多少次操作

思路:我把三個數按從大到小的排序,友善後來的計算,a是最大的數,b和c有兩種情況,相差為奇數時可以通過(b-c)/2次操作變成b,b-1,然後隻要a-b+2次操作就能得到相等,相差為偶數時通過(b-c)/2次操作變成b,b,然後再a-b次操作就相等了

#include <iostream>
using namespace std;
void change(int *a, int *b)
{
    int m;
    if (*a < *b)
    {
        m = *a;
        *a = *b;
        *b = m;
    }
}
int main()
{
    int a, b, c;
    cin >> a >> b >> c;
    change(&a, &b);
    change(&a, &c);
    change(&b, &c);
    int i = ;
    if (b == c)
    {
        cout << a - b;
    }
    else if ((b - c)%2== )
    {
        cout << a - b + +(b-c)/;
    }
    else if ((b - c) %  == )
    {
        cout << (b - c) /  + a - b;
    }
    return ;
}
           

大三狗第一次做筆試,選擇題大半都不會,程式設計走了大半天彎路才回來,不知道兩個AC能不能進面試 ̄□ ̄||

it

繼續閱讀