成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

工作中幾乎用不到算法,為什么還要學(xué)算法?

開(kāi)發(fā) 前端 算法
數(shù)據(jù)結(jié)構(gòu)和算法在實(shí)現(xiàn)軟件和雇用過(guò)程中也起著重要作用。許多學(xué)生和專(zhuān)業(yè)人士都提出了這樣一個(gè)問(wèn)題:為什么這些公司的訪談只關(guān)注DSA,而不是針對(duì)語(yǔ)言/框架/工具的特定問(wèn)題?

 常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)與算法

最基本的數(shù)據(jù)結(jié)構(gòu)和算法包括:

  • 排序算法
  • 遞歸
  • 鏈表
  • 數(shù)組
  • 隊(duì)列
  • 優(yōu)先隊(duì)列
  • 哈希(散列)
  • 二叉樹(shù),B樹(shù),B+樹(shù),紅黑樹(shù)
  • bitmap
  • 跳表
  • 二分法
  • 動(dòng)態(tài)規(guī)劃
  • 貪心算法
  • ……

工作無(wú)需數(shù)據(jù)結(jié)構(gòu)與算法?

您是否知道您的所有SQL和Linux命令都是算法和數(shù)據(jù)結(jié)構(gòu)?您可能沒(méi)有意識(shí)到這一點(diǎn),但這就是軟件的工作方式。

數(shù)據(jù)結(jié)構(gòu)和算法在實(shí)現(xiàn)軟件和雇用過(guò)程中也起著重要作用。許多學(xué)生和專(zhuān)業(yè)人士都提出了這樣一個(gè)問(wèn)題:為什么這些公司的訪談只關(guān)注DSA,而不是針對(duì)語(yǔ)言/框架/工具的特定問(wèn)題?

當(dāng)您要求某人做出某項(xiàng)決定時(shí),好的人會(huì)告訴您“我選擇做X,因?yàn)樵谶@些方面,它比A,B更好。我本可以選擇C的,但是由于這個(gè)原因,我認(rèn)為這是一個(gè)更好的選擇。在我們的日常生活中,我們總是和那個(gè)可以在短時(shí)間內(nèi)高效完成任務(wù)并使用更少資源的人一起工作。這些公司也發(fā)生同樣的事情。這些公司面臨的問(wèn)題更加艱巨,解決這些公司的問(wèn)題時(shí),軟件開(kāi)發(fā)人員必須做出正確的決定。

[[386708]]

對(duì)數(shù)據(jù)結(jié)構(gòu)(例如哈希表,樹(shù),圖表,圖形和各種算法)的了解對(duì)于有效解決這些問(wèn)題大有幫助,面試官對(duì)查看候選人如何使用這些工具解決問(wèn)題的興趣更大。就像汽車(chē)修理工需要正確的工具來(lái)修理汽車(chē)并使其正常運(yùn)行一樣,程序員也需要正確的工具(算法和數(shù)據(jù)結(jié)構(gòu))來(lái)使軟件正確運(yùn)行。因此,面試官想找到一個(gè)候選人,可以應(yīng)用正確的工具來(lái)解決給定的問(wèn)題。

在像Google,Microsoft,F(xiàn)acebook,Amazon這樣的公司工作的工程師與其他公司不同,在這些公司中,編碼只是實(shí)現(xiàn),大約需要20-30%的時(shí)間分配給項(xiàng)目。大多數(shù)時(shí)間都在使用最佳算法來(lái)設(shè)計(jì)事物,以節(jié)省公司的資源(服務(wù)器,計(jì)算能力等)。這就是為什么這些公司中的采訪集在算法上的主要原因,因?yàn)樗麄兿M_(kāi)箱即用的人設(shè)計(jì)可以為公司節(jié)省數(shù)千美元的算法。

示例:假設(shè)您在Facebook公司工作。您提出了時(shí)間復(fù)雜度為O(nLogn)而不是O(n ^ 2)的問(wèn)題的最佳解決方案,并假定公司的問(wèn)題的n實(shí)際為生活場(chǎng)景為1億(考慮到在Facebook上注冊(cè)的用戶數(shù)超過(guò)10億)。nLogn為8億,而n ^ 2為10 ^ 70億。在成本方面,您可以看到效率提高了10 ^ 7倍以上,這在服務(wù)器成本和時(shí)間方面可以節(jié)省很多。

從用人者角度

毋庸置疑,面試是用來(lái)篩選候選人的,在這個(gè)僧多粥少的時(shí)候,就需要提高篩選條件,例如最常見(jiàn)的學(xué)歷,不是說(shuō)學(xué)歷一般的人不好,而是總體來(lái)說(shuō),學(xué)歷好的人里面挑選到合適的概率比較大而已,這就是現(xiàn)實(shí)。而面試題中,算法相比于其他記憶型的題目,就能很好的體現(xiàn)一個(gè)人的邏輯和思路,因而也是一個(gè)很好的篩選條件。當(dāng)然像操作系統(tǒng),網(wǎng)絡(luò),Linux等都是很多公司喜歡考察的點(diǎn)。

所以為了面試還是需要準(zhǔn)備學(xué)習(xí)算法的。

從個(gè)人角度

進(jìn)去的第一家公司基本用不上什么算法(血的教訓(xùn),在學(xué)校的時(shí)候一定要好好準(zhǔn)備),甚至用不上網(wǎng)絡(luò)編程,基本就是簡(jiǎn)單純C開(kāi)發(fā),因?yàn)槟切〇|西早就封裝好了(由另外一個(gè)組負(fù)責(zé)開(kāi)發(fā)維護(hù)),只需要調(diào)用即可。包括后來(lái)去面試,主要面試了兩類(lèi)公司,一類(lèi)是傳統(tǒng)通信技術(shù)類(lèi),一類(lèi)是互聯(lián)網(wǎng)公司,前者關(guān)注項(xiàng)目本身,以及基本的技術(shù)技能更多一些,而后者考察的方面通常比較多,包括操作系統(tǒng),數(shù)據(jù)庫(kù),算法,網(wǎng)絡(luò)等知識(shí)。

那么面完之后是不是真的就完全沒(méi)用了呢?確實(shí),大多數(shù)時(shí)候根本用不上。你寫(xiě)的可能多是業(yè)務(wù)代碼,是業(yè)務(wù)流程的設(shè)計(jì),代碼實(shí)現(xiàn)可能只是很小的一環(huán)。而且現(xiàn)有算法實(shí)現(xiàn)一搜一大把,基本不太可能要你自己去實(shí)現(xiàn)什么快排,跳表,快排,紅黑樹(shù)之類(lèi)的算法,但是學(xué)習(xí)算法有好處。

例如,你可能要根據(jù)你的業(yè)務(wù)排序需求來(lái)選擇是用穩(wěn)定排序還是非穩(wěn)定排序;你可能會(huì)根據(jù)插入和刪除數(shù)據(jù)的頻率來(lái)選擇使用array list還是link list;你可能為了處理top K問(wèn)題采用堆相關(guān)算法;可能為了某種情況下的快速查找而使用哈希;你可能在設(shè)計(jì)你的業(yè)務(wù)數(shù)據(jù)結(jié)構(gòu)時(shí)引用了基本數(shù)據(jù)結(jié)構(gòu)的思想。

算法解決一些現(xiàn)實(shí)世界中的復(fù)雜問(wèn)題

當(dāng)您在混亂的房間里找不到書(shū)或衣服時(shí),有沒(méi)有被父母罵過(guò)?肯定有過(guò)吧,您的父母的建議是對(duì)的,以確保一切都在正確的位置,以便下次您可以輕松獲得所需的東西。在這里,您需要以一種結(jié)構(gòu)來(lái)安排和保留所有內(nèi)容(數(shù)據(jù)),以便每當(dāng)您需要搜索某些內(nèi)容時(shí),都可以輕松而迅速地獲得它。這個(gè)例子清楚地表明,在現(xiàn)實(shí)生活中安排或構(gòu)造數(shù)據(jù)有多么重要。

現(xiàn)在以圖書(shū)館為例。如果您需要從圖書(shū)館中找到一本關(guān)于集合論的書(shū),那么您將首先進(jìn)入數(shù)學(xué)部分,然后進(jìn)入集合論部分。如果這些書(shū)不是以這種方式組織的,而是隨機(jī)分配的,那么尋找特定的書(shū)將很令人沮喪。因此,數(shù)據(jù)結(jié)構(gòu)是指我們?cè)谟?jì)算機(jī)上組織信息的方式。計(jì)算機(jī)科學(xué)家進(jìn)行處理并尋找可以組織數(shù)據(jù)的最佳方式,因此可以根據(jù)所提供的輸入更好地對(duì)其進(jìn)行處理。

許多新手程序員都提出了這樣一個(gè)問(wèn)題:我們?cè)谌粘I钪袑?shù)據(jù)結(jié)構(gòu)和算法的所有內(nèi)容都用在哪里,以及它在解決現(xiàn)實(shí)世界中的復(fù)雜問(wèn)題上如何有用。我們需要提及的是,無(wú)論您是否有興趣進(jìn)入頂尖的科技巨頭公司,DSA仍然對(duì)您的日常生活有很大幫助。

[[386709]]

總結(jié)

通常我們不需要自己實(shí)現(xiàn)這些算法,不過(guò)我覺(jué)得從中了解以下幾點(diǎn)非常重要

  • 時(shí)間和空間復(fù)雜度的概念
  • 各類(lèi)數(shù)據(jù)結(jié)構(gòu)或算法的效率
  • 各類(lèi)數(shù)據(jù)結(jié)構(gòu)或算法的復(fù)雜度
  • 各類(lèi)數(shù)據(jù)結(jié)構(gòu)或者算法的適用場(chǎng)景
  • 常見(jiàn)的如vector,map,set等容器背后的數(shù)據(jù)結(jié)構(gòu)是什么,它們的查找或者插入效率如何
  • 從現(xiàn)有數(shù)據(jù)結(jié)構(gòu)和算法中獲得思路
  • 根據(jù)現(xiàn)有問(wèn)題選擇合適的數(shù)據(jù)結(jié)構(gòu)和算法

不像Java,C++,Python之流,C庫(kù)中可能沒(méi)有上面提到的數(shù)據(jù)結(jié)構(gòu)或者算法的實(shí)現(xiàn),因而C語(yǔ)言也是加深對(duì)它們理解的不二選擇。

一切為了更好地解決實(shí)際問(wèn)題。

 

責(zé)任編輯:姜華 來(lái)源: 今日頭條
相關(guān)推薦

2021-12-31 08:56:13

程序員算法代碼

2024-04-28 11:22:18

2024-12-19 15:41:17

2017-11-24 08:30:05

Python代碼區(qū)塊鏈

2018-01-30 22:07:18

Python區(qū)塊鏈比特幣

2024-01-30 17:48:43

算法字符串性能

2017-12-18 12:45:41

前端高薪IT行業(yè)

2020-07-22 11:20:28

網(wǎng)絡(luò)安全信息安全技術(shù)

2021-03-02 22:10:10

Java互聯(lián)網(wǎng)語(yǔ)言

2022-06-07 08:39:35

RPCHTTP

2021-04-16 23:28:11

Java語(yǔ)言IT

2021-07-15 08:12:31

體系感面試邏輯思維

2024-12-17 08:20:50

2013-10-17 13:20:34

2022-05-31 13:54:18

算法穩(wěn)定幣加密貨幣危險(xiǎn)

2019-08-05 14:23:43

DockerKubernetes容器

2024-07-11 10:41:07

HTTPSHTTP文本傳輸協(xié)議

2020-04-29 08:04:11

NoSQLMySQLSQL

2021-05-19 09:37:45

SessionTokencookie

2020-11-25 09:36:17

HTTPRPC遠(yuǎn)程
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 国产精品自在线 | 亚洲成人一区二区三区 | 欧洲精品码一区二区三区免费看 | 久久国产精品精品国产色婷婷 | 欧美一区视频在线 | 国产成人综合在线 | 中文字幕在线欧美 | 日本不卡一区二区三区在线观看 | 日本一区二区不卡 | 亚洲高清成人在线 | 亚洲综合日韩精品欧美综合区 | 中文字幕亚洲精品 | 精品视频免费 | 国产精品国产三级国产aⅴ原创 | 日一区二区三区 | 91精品国产综合久久久密闭 | 国产美女一区二区 | 欧美激情a∨在线视频播放 成人免费共享视频 | 国产在线视频一区二区董小宛性色 | 亚洲精品欧美 | 香蕉视频黄色 | 91精品国产一区二区三区 | 欧美精品在线一区 | 精品亚洲一区二区 | 岛国一区| 超碰国产在线 | 91tv在线观看 | 精品一区二区三区免费毛片 | 国产一区二区三区在线免费 | 91在线视频观看 | 国产成人自拍一区 | 欧美二区在线 | 91精品久久久久久综合五月天 | 日本色综合| 欧美日韩视频在线 | 欧美一级片黄色 | 欧美aa在线 | 精久久久| 伊人久麻豆社区 | 涩涩视频在线观看 | 美美女高清毛片视频免费观看 |