作為一名普通的大三學生,第一次做筆試,是以想發表一些對愛奇藝筆試的看法**
單選題(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