自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

面試中經(jīng)常被問(wèn)到的18個(gè)算法題

新聞 算法
算法是比較復(fù)雜又基礎(chǔ)的學(xué)科,每個(gè)學(xué)編程的人都會(huì)學(xué)習(xí)大量的算法。而根據(jù)統(tǒng)計(jì),以下這18個(gè)問(wèn)題是面試中最容易遇到的,本文給出了一些基本答案,供算法方向工程師或?qū)Υ烁信d趣的程序員參考。

算法是比較復(fù)雜又基礎(chǔ)的學(xué)科,每個(gè)學(xué)編程的人都會(huì)學(xué)習(xí)大量的算法。而根據(jù)統(tǒng)計(jì),以下這18個(gè)問(wèn)題是面試中最容易遇到的,本文給出了一些基本答案,供算法方向工程師或?qū)Υ烁信d趣的程序員參考。

1)請(qǐng)簡(jiǎn)單解釋算法是什么?

算法是一個(gè)定義良好的計(jì)算過(guò)程,它將一些值作為輸入并產(chǎn)生相應(yīng)的輸出值。簡(jiǎn)單來(lái)說(shuō),它是將輸入轉(zhuǎn)換為輸出的一系列計(jì)算步驟。

2)解釋什么是快速排序算法?

快速排序算法能夠快速排序列表或查詢。它基于分割交換排序的原則,這種類型的算法占用空間較小,它將待排序列表分為三個(gè)主要部分:

小于Pivot的元素

樞軸元素Pivot(選定的比較值)

大于Pivot的元素

3)解釋算法的時(shí)間復(fù)雜度?

算法的時(shí)間復(fù)雜度表示程序運(yùn)行完成所需的總時(shí)間,它通常用大O表示法來(lái)表示。

4)請(qǐng)問(wèn)用于時(shí)間復(fù)雜度的符號(hào)類型是什么?

用于時(shí)間復(fù)雜度的符號(hào)類型包括:

Big Oh:它表示小于或等于目標(biāo)多項(xiàng)式

Big Omega:它表示大于或等于目標(biāo)多項(xiàng)式

Big Theta:它表示與目標(biāo)多項(xiàng)式相等

Little Oh:它表示小于目標(biāo)多項(xiàng)式

Little Omega:它表示大于目標(biāo)多項(xiàng)式

5)解釋二分法檢索如何工作?

在二分法檢索中,我們先確定數(shù)組的中間位置,然后將要查找的值與數(shù)組中間位置的值進(jìn)行比較,若小于數(shù)組中間值,則要查找的值應(yīng)位于該中間值之前,依此類推,不斷縮小查找范圍,直至得到最終結(jié)果。

6)解釋是否可以使用二分法檢索鏈表?

由于隨機(jī)訪問(wèn)在鏈表中是不可接受的,所以不可能到達(dá)O(1)時(shí)間的中間元素。因此,對(duì)于鏈表來(lái)說(shuō),二分法檢索是不可以的(對(duì)順序鏈表或排序后的鏈表是可以用的)。

7)解釋什么是堆排序?

堆排序可以看成是選擇排序的改進(jìn),它可以定義為基于比較的排序算法。它將其輸入劃分為未排序和排序的區(qū)域,通過(guò)不斷消除最小元素并將其移動(dòng)到排序區(qū)域來(lái)收縮未排序區(qū)域。

8)說(shuō)明什么是Skip list?

Skip list數(shù)據(jù)結(jié)構(gòu)化的方法,它允許算法在符號(hào)表或字典中搜索、刪除和插入元素。在Skip list中,每個(gè)元素由一個(gè)節(jié)點(diǎn)表示。搜索函數(shù)返回與key相關(guān)的值的內(nèi)容。插入操作將指定的鍵與新值相關(guān)聯(lián),刪除操作可刪除指定的鍵。

9)解釋插入排序算法的空間復(fù)雜度是多少?

插入排序是一種就地排序算法,這意味著它不需要額外的或僅需要少量的存儲(chǔ)空間。對(duì)于插入排序,它只需要將單個(gè)列表元素存儲(chǔ)在初始數(shù)據(jù)的外側(cè),從而使空間復(fù)雜度為O(1)。

10)解釋什么是“哈希算法”,它們用于什么?

“哈希算法”是一個(gè)哈希函數(shù),它使用任意長(zhǎng)度的字符串,并將其減少為唯一的固定長(zhǎng)度字符串。它用于密碼有效性、消息和數(shù)據(jù)完整性以及許多其他加密系統(tǒng)。

11)解釋如何查找鏈表是否有循環(huán)?

要知道鏈表是否有循環(huán),我們將采用兩個(gè)指針的方法。如果保留兩個(gè)指針,并且在處理兩個(gè)節(jié)點(diǎn)之后增加一個(gè)指針,并且在處理每個(gè)節(jié)點(diǎn)之后,遇到指針指向同一個(gè)節(jié)點(diǎn)的情況,這只有在鏈表有循環(huán)時(shí)才會(huì)發(fā)生。

12)解釋加密算法的工作原理?

加密是將明文轉(zhuǎn)換為稱為“密文”的密碼格式的過(guò)程。要轉(zhuǎn)換文本,算法使用一系列被稱為“鍵”的位來(lái)進(jìn)行計(jì)算。密鑰越大,創(chuàng)建密文的潛在模式數(shù)越多。大多數(shù)加密算法使用長(zhǎng)度約為64到128位的固定輸入塊,而有些則使用流方法。

13)列出一些常用的加密算法?

一些常用的加密算法是:

  • 3-way
  • Blowfish
  • CAST
  • CMEA
  • GOST
  • DES 和Triple DES
  • IDEA
  • LOKI等等

14)解釋一個(gè)算法的***情況和最壞情況之間有什么區(qū)別?

·***情況:算法的***情況解釋為算法執(zhí)行***的數(shù)據(jù)排列。例如,我們進(jìn)行二分法檢索,如果目標(biāo)值位于正在搜索的數(shù)據(jù)中心,則這就是***情況,***情況時(shí)間復(fù)雜度為0。

·最差情況:給定算法的最差輸入?yún)⒖?。例如快速排序,如果選擇關(guān)鍵值的子列表的***或最小元素,則會(huì)導(dǎo)致最差情況出現(xiàn),這將導(dǎo)致時(shí)間復(fù)雜度快速退化到O(n2)。

15)解釋什么是基數(shù)排序算法?

基數(shù)排序又稱“桶子法”,是通過(guò)比較數(shù)字將其分配到不同的“桶里”來(lái)排序元素的。它是線性排序算法之一。

16)解釋什么是遞歸算法?

遞歸算法是一個(gè)解決復(fù)雜問(wèn)題的方法,將問(wèn)題分解成較小的子問(wèn)題,直到分解的足夠小,可以輕松解決問(wèn)題為止。通常,它涉及一個(gè)調(diào)用自身的函數(shù)。

17)提到遞歸算法的三個(gè)定律是什么?

所有遞歸算法必須遵循三個(gè)規(guī)律

遞歸算法必須有一個(gè)基點(diǎn)

遞歸算法必須有一個(gè)趨向基點(diǎn)的狀態(tài)變化過(guò)程

遞歸算法必須自我調(diào)用

18)解釋什么是冒泡排序算法?

冒泡排序算法也稱為下沉排序。在這種類型的排序中,要排序的列表的相鄰元素之間互相比較。如果它們按順序排列錯(cuò)誤,將交換值并以正確的順序排列,直到最終結(jié)果“浮”出水面。

責(zé)任編輯:武曉燕 來(lái)源: IT168企業(yè)級(jí)
相關(guān)推薦

2019-03-06 14:26:31

Javascript面試前端

2022-01-12 09:08:37

索引JavaReference對(duì)象

2019-02-21 10:49:51

Redis持久化恢復(fù)

2019-12-16 15:37:57

JavaScript人生第一份工作瀏覽器

2022-08-12 09:35:36

JavaScript面試

2022-10-09 07:33:38

JavaSPI程序

2019-07-16 10:10:46

JavaScript數(shù)據(jù)類型

2020-05-14 08:13:56

JDK命令Java

2019-05-15 16:45:13

SpringBoot面試題Java

2010-04-06 13:07:45

Oracle數(shù)據(jù)庫(kù)

2024-05-13 12:33:17

Raft算法Java

2022-06-27 09:14:34

JavaScript閉包代碼

2010-03-31 17:17:32

2022-04-01 12:40:13

MySQL數(shù)據(jù)庫(kù)

2020-07-01 17:25:28

Redis數(shù)據(jù)庫(kù)內(nèi)存

2020-11-08 16:04:03

開(kāi)發(fā)工具技術(shù)

2022-09-25 22:56:52

JavaScrip編程技巧

2010-04-07 16:41:50

Oracle SQL優(yōu)

2010-03-22 15:38:46

Python常用模塊

2021-10-08 20:30:12

ZooKeeper選舉機(jī)制
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)