阿里巴巴暑期實習生筆試題

2021-06-28 12:50:18 字數 1806 閱讀 3441

1.kmp演算法

//長度為n的主串t中匹配長度為m的子串p (n>=m)。

//匹配成功:存在p的每個字元依次和t中的乙個連續字串行相等

//輸出主串中匹配串起始位置,匹配失敗輸出-1

//思路:

//首先用o(m)的時間對子串進行預處理,可通過子串本身的特性判斷出需要右移幾位才是可能匹配的

//然後用o(n)的時間去完成匹配

//時間複雜度: o(m+n)

#include#include//失配函式

//f[i]表示狀態i失配時應轉移到新的狀態,特別注意f[0]=0

//根據f[0],f[1],...,f[i-1]遞推f[i]

void getfail(char* p, int* f)

else

printf("%d", a); }

a.01

b.10

c.12

d.22

5.排序

下列序排演算法中最壞複雜度不是n(n-1)/2的是_(d) a.

快速序排     b.冒泡序排   c.直接插入序排   d.堆序排

快速排序:

首先任意選取乙個資料(通常選用陣列的第乙個數)作為關鍵資料,然後將所有比它小的數都放到它前面,所有比它大的數都放到它後面,這個過程稱為一趟快速排序。

快速排序每次將待排序陣列分為兩個部分,在理想狀況下,每一次都將待排序陣列劃分成等長兩個部分,則需要logn次劃分。

而在最壞情況下,即陣列已經有序或大致有序的情況下,每次劃分只能減少乙個元素,快速排序將不幸退化為氣泡排序,所以快速排序時間複雜度下界為o(nlogn),最壞情況為o(n^2)。在實際應用中,快速排序的平均時間複雜度為o(nlogn)。

氣泡排序:

氣泡排序是一種用時間換空間的排序方法,最壞情況是把順序的排列變成逆序,或者把逆序的數列變成順序。在這種情況下,每一次比較都需要進行交換運算。

直接插入排序:

每次從無序表中取出第乙個元素,把它插入到有序表的合適位置,使有序表仍然有序。

直接插入排序屬於穩定的排序,最壞時間複雜性為o(n^2),空間複雜度為o(1)。

堆排序:

由於堆排序對原始記錄的排序狀態並不敏感,因此它無論是最好、最壞和平均時間複雜度均為o(nlogn)。

6.時間複雜度

判斷一包含n個整數a中是否存在i、j、k滿足a[i] + a[j] = a[k]的時間複雜度為(b)

a、o(n) b、o(n^

2) c、o(nlog(n)) d、o(n^2log(n))

7.程序

(d)不能用於linux中的程序通訊

a.共享記憶體

b.命名管道

c.訊號量

d.臨界區

現在linux使用的程序間通訊方式:

(1)管道(pipe)和有名管道(fifo)

(2)訊號(signal)

(3)訊息佇列

(4)共享記憶體

(5)訊號量

(6)套接字(socket)

所謂的臨界區(critical section),實際上指的是一段**。選d;在《windows核心程式設計第五版》中,對臨界區的解釋是:它是一小段**,它在執行之前需要獨佔對一些共享資源的訪問權。這種方式可以讓多行**以「原子方式」來對資源進行操控。這裡的原子方式,指的是**知道除了當前執行緒之外,沒有其他任何執行緒會同時訪問該資源。當然,系統仍然可以暫停當前執行緒去排程其他執行緒。但是,在當前執行緒離開臨界區之前,系統是不會去排程任何想要訪問同一資源的其他執行緒。

阿里巴巴2017實習生筆試題 一

ps 檢視答案請移步bat直通車 總計24道題目,鑑於csdn的markdown格式總出錯,這裡顯示有問題,建議直接移步bat直通車直接檢視 選擇題 1.關於c 的inline關鍵字,以下說法正確的是 a.使用inline關鍵字的函式會被編譯器在呼叫處展開 b.標頭檔案中可以包含inline函式的宣...

2023年阿里巴巴實習生筆試題

前幾天參加了阿里的筆試題,題目雖然很簡單,但是現在回想下發現出了不少問題,還是基礎不牢固啊。把這些題目寫出來也算是對自己的一種提公升吧。1.html題 國家名稱 網域名稱排名 中國 www.taobao.com 1 美國 epay www.epay.com 2 amazon www.epay.com...

2011阿里巴巴集團實習生招聘筆試題 C C

公共題 選擇題 每題5分 1.若一棵二叉樹具有10個度為2的結點,則該二叉樹的度為0的結點個數是 a 9 b 11 c 12 d 不確定 2.下列排序演算法中,其時間複雜度和記錄的初始排列無關的是 a 插入排序 預先排序,執行時間為o n b 堆排序 c 快速排序 最壞情形o n2 d 氣泡排序 最...