作為一名做 Web 開發的 Java 工程師,演算法在工作中基本不怎麼用到,但為什麼面試總會問演算法的問題?

時間 2021-05-11 21:40:42

1樓:oxygen2

能有一些思想的。比如你前端的選單就是樹的應用。知識圖譜就是圖的應用。還有很多後台邏輯涉及到搜尋遍歷。最簡單的後台有很多字串處理。

2樓:

如果面試都問一些之前日常工作中的問題,天天用天天見的東西,你心裡自然熟了,還怎麼壓你工資,要問就問你不接觸的東西,會什麼問什麼這是大忌,總能找你不懂的東西,甚至問問你對伺服器系統的理解,順便網路架構也問問,我就不信你懂DB的會懂JQUERY,懂JQUERY的回去了解路由交換,日常開發工程師最生疏的就是資料結構,問這個準沒錯。

3樓:kaito

就好比一些市井之徒說什麼高等數學沒用?日常生活會個加減乘除就夠了,實際上對於他們也的確如此。沒有用到,是說明做的產品或者專案過於簡單,深度不夠,資料庫查詢優化,資料快取,都是演算法和資料結構的影子出現。

4樓:neether

演算法之類的問題屬於提高型問題,就像一張卷子上不能只有簡單的問題一樣。

而演算法題的出題方法,不少面試中的題目也是有問題的。

演算法題目注重原理和個人理解,而不是強調如何實現,考察的是乙個人的知識結構和解決問題的能力。

5樓:劉定枝

考你演算法,其實也不說以後工作上會用到很多。只是想看看能不能有一些最基本的概念。

最基本的一些資料結構要掌握好。比如hashmap,堆,棧。

還有可以讓你對一些基本的資料儲存應該使用什麼型別的儲存結構,有一定的考核。

面過一些應聘者,對一些基本資料概念都答不上來,實在不敢要

6樓:今天只做一件事

作為乙個程式設計渣渣的準大四狗,並且本身並不會什麼資料結構和演算法,但是現在越來越感覺演算法和資料結構就是程式設計的核心啊,是本質的東西

7樓:

歪個樓,很多答主回答挺有道理,說的也挺正確的,沒毛病,可就那語氣讓人看著那麼不舒服。大家都是程式設計師(或者是碼農?哈哈),不會演算法可以學習,技術是一步步提高的。

可是在有些答主那,懂演算法似乎成了一種智商上的優越,懂演算法就成了聰明人。抱歉,我不是很懂你們這種""程式設計師"。怕被噴,匿了

8樓:扼殺黑暗

缺啥啥就重要,懂不?

溝通和理解能力不行,這就是短板,所以遇到溝通和協商的問題就不行經驗不足,這就是短板,所以遇到問題無法快速解決演算法和資料結構不行,這就是短板,所以需要深入分析問題的時候就沒有辦法正常企業,面試會考慮到專案經驗,溝通能力,基礎知識三個方面專案經驗和溝通能力都能在團隊中得到鍛鍊,只有基礎知識是靠人自己那一般限制人成長的就是基礎知識這個短板

所以,企業招人考核演算法,本質是考察你這個人的學習能力和成長潛力你沒潛力,就不能和企業一起成長,早晚要淘汰,招你來幹嘛?

9樓:程式獵人

我跟你說乙個事兒。

這幾年我對我們招人的標準一再降低一直不滿。一些破破爛爛的人也進來了。

給他們培訓的時候,講一點演算法相關的東西,很多人就腦子跟不上了。在我們看來是顯而易見的事情,他們就是看不到兩者的相關性。經過驗證,這還真不是知識儲備差異造成的。

好歹把培訓折騰完了,人都進了專案了。

客戶的一些需求需要實現,你會發現那些搞不懂演算法的人,雖然我們的工作中確實用不上多少演算法,但是客戶需求稍微邏輯複雜一點,他們就理解不了了。給他講清楚的時間要成倍增長,讓他們直接聽取客戶的說明根本無法放心。

其實,我對一些複雜演算法,也有腦子轉不過來的時候,所以遇到有些極其複雜的保險、銀行的條款規則邏輯,如果不借助紙張筆記什麼的,我也會暈。但我也見過憑腦子就能理順邏輯的人。

估計這就是每個人有每個人的天花板吧。

所以,有可能真的不一定能用到演算法,但是這是乙個不錯的篩選器,可以把那些將來會大大增加溝通成本的人篩掉。這對乙個企業的健康成長是很必要的。

10樓:

其實算不上演算法,只是出了最簡單的資料結構題。套兩個迴圈就可以啦。主要是看:

1 是否有基礎能應付

2 是否直接放棄

3 解決問題的能力

11樓:

如果你覺得演算法使用不大,你可以向面試官主動講你覺得可以媲美演算法的技術或者工作經驗,其實面試的範圍只是為了更好地評估求職者。

12樓:liu sccds

如果追溯計算機的發展史,我們發現計算機技術的進步,演算法在其中發揮了無可磨滅的作用。以前的裝置硬體指標低,人們如果想用計算機做一些複雜的運算,只有研究出更加合理的演算法。

只是現在很多學校課程,老師本身修為不高,或者缺乏實際專案經驗,把演算法講成一種功利的,不透徹的東西了。

如果有機會聽一下Princeton University的演算法課,發現他們的演算法課中無不貫穿計算機的發展歷程,教授的講課的時候也以本校校友在演算法方面取得的成績而引以為豪(他本身也是大牛)。從這裡來看,演算法與解決問題的能力並不是衝突的。

很多人太過於強調工作經驗,實際上工作經驗僅僅是「我見過」,「我解決過」。但是很多名校畢業的學生,雖然沒有工作經驗,但是已經具有了「沒見過的東西也可以想辦法解決」的能力。

對於學生來說,畢業的時候都沒有工作經驗(相比於職場的人),那麼拿什麼來區分篩選人呢?不可能把所有的技術人員都用在招聘上,HR也不是很懂技術,或者說遠端面試有他的交流侷限性,所以就做一些演算法題來測試了。

13樓:陸斯托夫斯基

我覺得考演算法主要是看你的邏輯能力了,解決乙個問題可以有多種思路,但是哪一種計算量最少,執行起來最快,是完全不同的。

如果,面試官提了乙個很難很難的演算法題。。。別多想,他只是不想給你高工資而已

14樓:gaaklam yim

我個人認為是過濾用的。我現在的工作基本上是抽插資料庫。

入職考線代,幾何,微積分,閱讀理解和寫作。和程式設計以及現在做的事情基本上沒關係。

15樓:

主要是為了過濾。 學歷的作用也是這樣,可以大量節省HR和面試考官(工程師或經理)的工作量。工作人員的時間,也是公司的鉅額成本。

你讀了乙個名校,就幫助招聘公司節省了大量人力時間成本,這就是你的成本優勢。

主要原因都是因為中中國人太多了。

人口少的芬蘭就不一樣,技術公司只要你投了簡歷就會面試你,即使你小學畢業也一樣。

16樓:mk liu

應該說公司只是在招聘適合的人,

有的公司看中能力,演算法和邏輯比較看中,可能因為是產品型公司,或者很大的公司,經常做底層擴充套件

有的公司就是希望招過來馬上就幹活,即使公司能長遠發展,公司也不需要潛力特別大的,我們又不開發修改框架也不底層擴充套件,那找乙個牛人或者很有潛力成為大神的人幹嘛

17樓:

學習演算法實際只是學習一種思維方式,或者說學習一種眼界,就如排名第一的答主回答的,沒學過演算法的人,遇到這樣的問題的時候,根本就不會想到可以利用概率模型來實行最優配置。

這樣的問題其實有很多很多很多很多,一般的工程師都知道函式呼叫需要壓棧,壓棧需要時間,如何分塊乙個大專案可以將效率和可讀性或者可擴充套件性取得乙個平衡?這其實也是乙個演算法問題。

18樓:張天明

個人感覺演算法考察聰明程度,和接受能力的乙個很好的方式。

假設我公司要招聘應屆生,每個學生讀的書,做的東西都不同,作為考官,我也不知道你讀的東西,做過的專案是不是很有含金量。

所以我用演算法這種東西,看看candidate在短暫的準備之後,是否可以達到一定高度通過考核。

如果通過考核至少可以判斷這個人有不錯的智商和接受能力,那麼可以粗略判斷這個人可以比較快的學習到接下來用到的技術,例如web開發。

利用演算法考察,可以快速的篩選一些可能相對靠譜的工程師,並且帥選成本低廉。如果把candidate搞到乙個office,做乙個project,那成本可大多了

19樓:關一哥

「老闆,請問有1000根胡蘿蔔嗎?」

「沒有。「

「老闆,請問有1000根胡蘿蔔嗎?」

「沒有。「

」老闆,請問有1000根胡蘿蔔嗎?

「親,有的哇!」

「好的,給我來3根」

20樓:Elendil Zheng

說個最近碰到的情況吧有個需求是使用者每天上傳10W條資料然後跟資料庫裡面200W條資料做對比上傳這一部分沒什麼好說的但是在做資料對比的時候就需要有基本的演算法思想了一般的思維就是迴圈兩個表巢狀迴圈的時間複雜度是N*M 考慮到這個資料量這麼做對比估計使用者能等死這個時候就考慮用雜湊表重寫相關方法(GetHashCode,Equles) 然後直接取兩個的交集,補集, 基本上也就是一眨眼功夫就搞完了時間複雜度為線性(通過重寫GetHashCode可以確保雜湊值不會重複)

這只是個乙個人月都不到的小專案

熟練掌握基本資料結構和基本演算法就是為了跳出只有if else, for, while這些東西給程式更多的可能

21樓:金自翔

乙個社招的員工,當初沒麵演算法,今天review 時發現他在專案中創造了乙個避免md5碰撞的新演算法:把輸入反過來再算一遍md5,把正反兩個md5按位與到一起,這樣原本會碰撞的輸入就不會碰撞了。

你看,面不面演算法一點都不重要,是吧?

22樓:毛大軍

可以考業務啊,但那樣過筆試的人更少?

誰知到哪個地方可以找到非演算法的筆試題?

可以過掉培訓機構教出來的人?

他們太能背了

另在開發過程中一般web開發人員可以作的90%工作會佔90%時間還有10%會佔另90%時間.....

是由於題目不會作,上網找到後用專案練手.

對於回答:可以用google查到的同學求你了!

請別用google找到的答案用在專案中練手好麼?

23樓:李陶冶

關於這個問題,我很想告訴lz乙個殘酷、有趣而又有些玄妙的事實。

告訴你演算法沒用的人,很多都是拿著高薪,並且懂一定演算法的。

告訴你演算法是cs科學的靈魂的人,未必是這方面的大牛。

你去問演算法牛人,演算法有多重要,他們多半會強調演算法只是理論,工程性才重要。

但如果你去問乙個工程做的比較深,算法學的比較淺的哥們,他們很多會說演算法NB才是真正NB。

(也不排除有些2方面都不算很懂,但喜歡站隊發表自己觀點的)這種答案究竟是出於什麼情感?說不太清,多半是對於自己不熟悉的領域有所敬畏。對於自己熟悉的東西比較謙虛。

但看到這類回答的時候,你需要多分析一下他們的答案。

24樓:蔡洲

Web開發用演算法的場景相對於影象處理這些領域確實少,但不代表用不到,就算現在有很多現成的封裝可以讓你呼叫,但高併發大資料的場景下,還是需要你對演算法有深刻的理解才能得到更優的效能。殊途同歸,無論什麼領域精耕下去都會觸及到計算機的底層和實現原理,所以樓主說的有點偏頗。

至於面試官為什麼會問演算法,可能是出於工作需要,但最終還是會到關注工作主要的技術上。但是有時候面試官在簡歷上確實沒有亮點的情況下,最後只能問資料結構了這些了。

作為一名有5年工作經驗的Java 女程式設計師,想轉專案管理,請問有什麼要注意的嗎?怎麼準備自己的知識庫?

豆豆榨汁兒 專案管理的具體工作內容要看公司,拿專案經理來說,有的公司是專案負責人,有的公司是專案進度掌控者,有的是助理加協調,有的則是老闆的傳話筒。樓主可以根據自身情況和公司情況對號入座。一般來說,由技術轉管理的話,需要注意這麼幾點 第一,情商和溝通。老實說,很多程式設計師的情商真不敢恭維,如果溝通...

一名大三學生的求助(java)?

傻蛋兒 大三就可以自己出去找實習了,找些公司,然後投簡歷,校招或者社招進去實習,多面試幾家,面試的過程中學習和完善自己這樣就能一步步打消自己的顧慮了 唐昊 首先無需焦慮,對於未知的事物感到迷茫是很正常的。另外,其他答案都說過,基礎是永遠不會過時的。打好基礎是為了以後快速轉變其他工具。框架只是工具,學...

英文不好,java開發中可以用拼音做類名變數名嗎?會不會對別人有什麼影響?

CodeArhat 看場景。多數編碼規範 開發技巧都會強調用英文命名,避免拼音,更要避免拼音縮寫。但在前東家,我們多數自建系統是用拼音縮寫命名原始檔 類名 資料庫等。例如 市場服務 移動業務測試卡申請 對應SCFW YDYWCSKSQ,工程建設 新建駐地網專案評價 就是GCJS XJZDWXMPJ,...