1. 程式人生 > >2018-10-13 百度校招測試面試

2018-10-13 百度校招測試面試

一面:

1、自我介紹:

2、專案:

Token的實現方式:通過什麼來做唯一標識生成Token的?

答:裝置的硬體型號;

問:如果別人正好偽造了該硬體型號,進行獲取Token,你是怎麼解決的?

答:沒有解決方案;

3、sizeof(型別是指標)和sizeof(型別是陣列)的區別?

答:

知識點:指標的大小是問:一個指標變數佔用多少記憶體空間? 
分析:既然指標只是要儲存另一個變數的地址。注意,是存放一變數的地址,而不是存放一個變數本身,所以,不管指標指向什麼型別的變數,它的大小總是固定的:只要能放得下一個地址就行!
存放一個地址需要幾個位元組?即是和一個 int 型別的大小相同:4位元組。

#include <stdio.h>

int main(int argc, char *argv[])
{
    //在 Pascal 語言中,sizeof() 是一種記憶體容量度量函式,功能是返回一個變數或者型別的大小(以位元組為單位);
    //在 C 語言中,sizeof() 是一個判斷資料型別或者表示式長度的運算子。
	char buf0[10];
	char buf1[2][5];
	char *buf2[]={"12345","12345","12345","12345","12345","12345"};
	char **tmp = buf2;

	char *zifuchuanpoint;
    char *string="hi huan";


	char *p = buf0;

	printf("sizeof(buf0)=%d,sizeof(p)=%d\r\n",sizeof(buf0),sizeof(p));
	printf("sizeof(buf1)=%d,sizeof(buf1[1])=%d\r\n",sizeof(buf1),sizeof(buf1[1]));
	printf("sizeof(buf2)=%d,sizeof(buf2[1])=%d\r\n",sizeof(buf2),sizeof(buf2[1]));
	printf("sizeof(tmp)=%d\r\n",sizeof(tmp));

    printf("sizeof(char)=%d\n",sizeof(char));
    printf("sizeof(zifuchuanpoint)=%d\n",sizeof(zifuchuanpoint));
    printf("sizeof(string)=%d,sizeof(string+1)=%d\n",sizeof(string),sizeof(string+1));
    printf("sizeof(\"hi lele\")=%d\n",sizeof("hi lele"));

	return 0;
}

實驗結果:

通過上面的例子可以得出結論:

  sizeof(陣列名):返回陣列所有元素佔有的記憶體空間位元組數。

  sizeof(指標)  :返回計算機系統的地址位元組數,如果是32位系統,返回4,16位系統返回2。

注:buf2是指標陣列,陣列的元素是指標,所有sizeof(buf2[1])返回值是4。

sizeof("XXXXX")應該是多少呢?

驗證:printf("the len=%d\r\n",sizeof("123456789"));

結果:the len=10

對於“”中的字串,預設後面還有一個\0,所以實際的長度要+1.

4、Python中有什麼方法可以實現即列印陣列中元素的下標又列印陣列中對應的元素?

答:enumerate(list)方法;列舉

5、linux中vi中的命令:

5.1比如:實現在vi中,複製某10行資料;替換文字;

5.2如何替換檔案中所有的某字串為另字串?sed -i 

5.3如何找出程序的pid?答:根據程序名來獲取其pid,pidof 程序名稱;或者ps -ef | grep 程序名;或者netstat -p 可以與其它開關一起使用,就可以新增 “PID/程序名稱” 到 netstat 輸出中,這樣 debugging 的時候可以很方便的發現特定埠執行的程式。

6、寫個演算法吧?

答:那就寫冒泡吧,嘻嘻

//氣泡排序又稱簡單交換排序
//演算法的時間複雜度為:O(n^2)
void bublesort(RECNODE *r,int n){
    int i ,j;
    RECNODE temp;
    for(i=0;i<n-1;i++)
        for(j=n-2;j>=i;j--)//注意:此處是j>=i;而不是j>=0
           if (r[j+1].key<r[j].key)
               {
                    temp=r[j+1];
                    r[j+1]=r[j];
                    r[j]=temp;
               }
}

7、struct和union的區別?

答:struct佔記憶體空間是其資料域的空間總和;

       union佔得空間是其資料域們的最大空間數;

二面:

1、自我介紹

2、專案

問的我在浪潮做的Android系統專案,比如其框架了,編譯之類的,自己沒怎麼回答;

3、Django框架的結構views,models,template,其分別對應mvc的哪個?

Django框架。其設計的原理遵從MVC模式。我們從如下三個方面對MVC模式進行剖析。

MVC對應的含義及各層次對應的功能職責

Django框架中主要配置檔案的用途

從使用者請求到伺服器響應全互動過程來理解配置檔案

MVC對應的含義及跟層次對應的功能職責:

層次

檔案

職責

M(Models)

Models.py

模型(Model),即資料存取層:處理與資料相關的所有事務: 如何存取、如何驗證有效性、包含哪些行為以及資料之間的關係等。

V(Views)

Template,views.py

檢視(View),即表現層: 處理與表現相關的決定, 如何在頁面或其他型別文件中進行顯示。

模板(Template),即業務邏輯層。存取模型及調取恰當模板的相關邏輯。模型與模板的橋樑。

C(Controller)

Setting.py,url.py

處理使用者請求

4、問有2.5億個資料,怎麼找出其中不重複的int型元素?

5、一個數組A[n],其中n=9999,即陣列長度為9999,該陣列中放1~10000有序不重複個數,找出其中缺失的那個數。要求時間複雜度為O(log n)

答:數學方法:算1~10000的和,然後減去A[0]~A[9998]的和,得出缺失的數;

演算法:想到的是二分查詢法

下標和元素對應關係法;找到該陣列的中間元素,中間元素-其下標==2時,則缺失的數在左側;中間元素-其下標==1時,其缺失的數在右側;迴圈上面方法;

寫程式碼。。。。。。。。。。。

6、vi中的命令,替換某字串

三面:

1、自我介紹

2、規劃

3、年齡問題

4、愛好

5、如何減壓

6、有沒有offer

7、為什麼相干測試

8、自己優缺點

9、對一面和二面感覺怎麼樣