搜尋
首頁後端開發php教程程式設計師面試:電話面試問答Top 42(下)

今年是2015年,在過去幾年中,電面(電話面試)是篩選程式設計師職位候選人的最流行的方式。它讓僱用雙方很容易互相了解對方,候選人不需要去未來雇主的所在地,面試官也不用做額外的安排。這是我介紹程式設計師面試問題的文章的第二部分。我得到回饋說第一部分過於偏重編碼的題了,許多程式設計師希望我針對電面問題列一個類似的清單。為了順利通過電面進入下一輪,你必須足夠好地回答與你工作要求相關的全部問題。在大多針對JavaC++開發者的電面中,你不僅會遇到對應程式語言的問題,還會遇到其他技術的問題,例如SQL XMLUNIX、泛型程式設計、物件導向程式設計、資料結構與演算法、網路、編碼以及其他工作的面向。由於程式設計師求職電面的多變性,你需要有特殊的技巧,以面試官期待的方式展現自己。

要記住一件重要的事,在回答電面問題的時候,儘早提出關鍵點,總是給出關鍵性回答。由於面試官的問題往往會涵蓋很大範圍的主題,他們更喜歡關鍵性回答,而不是「OK,我知道」之類的空話。在面對面的面試中,你會有機會更深入地解釋問題的。順便說一下,這並不是固定的規則,根據面試官對你的回答的反應,你可以了解到他期望得到什麼樣的答案。如果他進行追問,期望你多說一些,那你就應該多說。但如果他立刻跳到下一個問題,那麼你就應該回答得清晰簡潔。在這篇文章中,我要和你分享一些常見的有趣程式設計問題,它們是針對電面改編過的。大部分來自科技公司的電面環節,包括BarclaysCitiNomura CTSTech MahindraHCL之類的提供服務的公司。像我之前提過的,面試題目是隨機選的,但大部分是基於基礎知識,因為那是面試官在電面時想考察的。雖然這些問題大多是針對初級開發者(25年經驗),高級和資深程式設計師仍然可以把它們用作自己面試的題目。如果你是面試官,你可以用這些問題快速篩選開發職位的候選人。我在此提供簡短答案,並給出詳細答案的連結。

下面是幾乎

42道程式設計師電面題目的清單。這些問題可以用來檢視任何程式設計師、開發者、軟體工程師、測試和營運工程師,因為它們是基於程式設計的基礎知識的。但它們最適合程式設計師和開發者。順便說一下,如果你是Java開發者,並且在尋找Java電面題目,去看看那個清單。本列表更加普遍,適用於所有的程序員,包括PythonRubyPerlC#開發者。

22.

你能否描述三種不同的在應用程式發布前對其進行測試的方式?

單元測試,整合測試,冒煙測試。單元測試用來測試獨立的單元是否按照預期工作,集成測試用來測試已被測試過的獨立單元能否共同工作,冒煙測試用來測試軟體最常用的功能是否正常工作,例如在一個飛機訂票網站中,你應該能訂票,取消或更改航班。

23.

迭代和遞歸有何不同? (detailed answer)

迭代透過循環來重複執行相同步驟,遞歸透過呼叫函數本身來做重複性工作。遞歸經常是複雜問題(例如漢諾塔、反轉鍊錶或反轉字串)的清晰簡潔的解決方案。遞歸的一個缺陷是深度,由於遞歸在堆疊中儲存中間結果,你只能進行一定深度的遞歸,在那之後你的程式會因為

StackOverFlowError而崩潰。這就是在產品程式碼中優先使用迭代而不是遞歸的原因。

24. &

&&運算符的區別是什麼? (detailed answer)

&是位元運算符,&&是邏輯運算符。 &&&的一個區別是位運算符(&)可以用於整型和布林類型,邏輯運算符(布林類型變數。當你寫a & b時,兩個整數數的每一位都會進行與運算。當你寫a && b時,第二個參數可能會也可能不會被執行,這也是它被稱為短路運算符的原因,至少在Java中是這樣的。我很喜歡這個問題,經常對初級開發者和畢業生問這個問題。

25. 1 XOR 1

的結果是什麼?

答案是

0

,因為XOR在兩個操作數(位元)不同時回傳1在兩個運算元(位元)不同時回傳1,相同時返回。例如0 XOR 0仍然是零,但0 XOR 11 XOR 0的結果是11

26.

如何得到一個整數型數的最後一位?

(answer)用取模運算符,數字

% 10

回傳數字的最後一位。例如2345 % 10會回傳5567 % 10會回傳7。類似的,除運算子可以用來去除數字的最後一位,例如2345 / 10的結果是234567 / 100這是值得了解的重要技巧,可以用來解決類似回文數、反轉數的問題。 27. 什麼是測試驅動開發?

測試驅動是一種常見的開發方法,在這種方法中,測試程式碼在功能程式碼之前編寫。測試決定了程式的結構。測試驅動的純粹主義者在寫為應用程式寫入測試之前,不會寫一行的應用程式碼。這能大幅提高程式碼質量,經常被認為是巨星級開發者的品質。

28.

里氏替換原則(Liskov substitution principle, LSP)

是什麼? (answer)

里氏替換原則是鮑伯大叔稱作SOLID的五條設計原則中的一條。里氏替換原則規定,所有的子類別都能作為父類別的代理(proxy)工作。例如,如果一個方法需要父類別物件作為輸入,那麼如果你提供一個子類別對象,它也應該正常運作。任何不能取代父類別的類別都違反了里氏替換原則。這其實是一個難以答出的問題,如果你答出了,那麼就會給面試官留下好的印象。

29. 什麼是開閉(Open closed)

設計原則? (answer)

開閉原則是SOLID中另一個重要的原則,它規定一個系統對擴展是開放的,但對修改是封閉的。意思是說,如果一個新的功能要被加入一個穩定的系統,那麼你不需要碰已被測試過的現有程式碼,新的功能可以透過只增加新類別來實現。

30. 二叉樹和二元查找樹的差別是什麼?

二叉查找樹是有序的二元樹,所有節點(例如根節點)的左子樹節點的值都小於或等於該節點的值,右子樹節點的值都大於或等於該節點的值。它是一個重要的資料結構,可以用來表示有序的資料。

31.

你能否給出一個遞歸演算法的實際例子? (example)

遞歸演算法能適用在許多地方,例如與二元樹和鍊錶相關的演算法。幾個與遞歸演算法的例子包括反轉字串,計算斐波那契數列。其他的例子包括反轉鍊錶、樹遍歷以及快速排序。

31.

演算法的時間複雜度是什麼?

時間複雜度表示的是運行時間對輸入量的比率。他表示一個演算法處理一定量的輸入需要多長時間。它是一個估計值,但足以表示輸入量從十增長到一千萬時,你的演算法會有什麼樣的表現。

33.

鍊錶和陣列有哪些重要差異? (detailed answer)

鍊錶和陣列都是程式設計世界中重要的資料結構。它們間最明顯的差異是,陣列將元素存放在連續的位址中,鍊錶將資料存放在記憶體中任意的位置。這使得鍊錶有巨大的擴展自己的靈活性,因為記憶體總是分散的。這種情況總是可能的:你無法創建一個陣列來存放一百萬個整數,但可以用鍊錶來存放,因為空間是存在的,只是不連續。其他的不同都是源自於這個事實。例如,在陣列中,如果你知道下標,可以用O(1)的時間得到一個元素,但在鍊錶中要花O(n)的時間。更多不同請見詳細答案。

33. 在雜湊表中處理衝突的方法有哪些?

線性探測(linear probing),二次哈希(double hashing)和連結(chaining)。在線性探測中,如果桶子已經被佔據了,那麼函數會線性地檢查下一個桶,直到找到一個空位。在連結中,多個元素可以儲存在同一個桶中。

34. 正規表示式是什麼意思? (answer)

正規表示式是在文字型資料上進行模式比對的方法。它是一種搜尋的強大方法,例如搜尋長字串中的某些字符,例如搜尋一本書中是否含有某個單字。所有主流程式設計語言都支援正規表示式,但是Perl正規表示式的能力是著名的。 Javajava.util.regex套件也支援類似Perl的正規表示式。你可以用正規表示式檢查email地址是否有效,電話號碼是否有效,郵遞區號是否有效,甚至社會保險號碼(SSN)是否有效。正規表示式最簡答的例子之一是檢查字串是不是一個數。

35. 什麼是無狀態(stateless)系統?

無狀態系統是不維護內部狀態的系統。這種系統在任何時刻,對相同的輸入都會給予相同的輸出。寫最佳化一個無狀態系統總是比較簡單的,所以如果可能,你總是應該優先寫無狀態系統。

36. 寫一個SQL查詢,在員工表中找出第二高的薪水。 (solution)

這是SQL面試的經典題目之一,儘管已經很老了,還是很有趣,並且可以追問很多問題來測試候選人的知識深度。你可以用相關或不相關的子查詢來找出第二高工資。如果你在用SQL ServerMySQL,你也可以用類似TOPLIMIT之類官的關鍵字,前提是面試。尋找第二高工資的最簡答方法是:

這個查詢首先查找最高工資,然後將它從列表中排除,再查找最高工資。很明顯,第二次返回的是第二高工資。

37. 可否描述一下什麼是關聯的和不關聯的子查詢? (answer)

在關聯的子查詢中,內層查詢依賴外層查詢,對外層查詢的每一行執行。非關聯的子查詢不依賴外層查詢,可以獨立執行。因此,前者慢,後者快。順便說一下,關聯的子查詢有一些很棒的應用,其中包括在僱員表中查找第N高的工資,這在上一道SQL問題中也有提到。

39. 不用算術運算符,如何判定一個數字是否為二的冪? (solution)

當你聽到不能用算術運算符的限制時,應該立刻假定這是一道關於位運算的題。如果沒有這條限制,那麼你可以輕鬆地用取模和除運算子檢查一個數是不是二的冪。用位元運算符,有一個很巧妙的方法來完成任務。你可以用下面這段程式碼來檢查一個數字是不是二的方

1

2

3

(Fpublicmpublicstatobstatic x & (x - 1)) == 0;

}

x & (x-1)

是一個很棒的技巧,可以將最右邊的為

11設為0。我是從《高效程式的奧秘》這本書中學到的。

40. 如何在UNIX上找到一個正在運行的Java進程? (command)

你可以組合使用psgrep命令來查找UNIX機器上的任何進程。假設你的Java進程有名字,或有任何可以用來配對的文字,那就使用這個指令。

ps -ef | grep “myJavaApp”

ps -e將列出所有的進程(所有用戶的進程,不只是你的),ps -f ,包括PID。如果你想要深入調查或用kill命令殺死這個進程,你會需要PID

41.

UNIX中尋找大的文件,例如1GB中尋找大的文件,例如1GB1GB以上的文件?

(command)

你可以輕鬆地用find命令尋找大的文件,因為它提供依據大小尋找文件的選項。如果你的檔案系統滿了,你的Java進程因為沒有空間而崩潰,那就使用這個指令。這個指令可以列出所有大於1GB的檔案。你可以很容易地改變大小,例如尋找所有100MB以上的文件,就用+100M

find . – type f -size +1G -print

42. shell

腳本是什麼?

shell腳本是包含程式元素(例如iffor循環)的一組shellfor循環)的一組例如,你可以寫一個shell

腳本來每天清理日誌文件,為記錄歷史備份數據,以及其他家務活、版本發布、監視等等。 免費領取LAMP兄弟連原創🜎盤細說PHP 》精要版,詳情諮詢官網客服:http://www.lampbrother.netPHPCMS

PHPCMS

.二次開發 /index.php?u=5

微信開發

http://yun.itxdl.cn/online/weixin/index.php?u=5開發

http://yun.itxdl.cn/online/server/index.php?u=5Javascript /online/js/index.php?u=5

CTO訓練營http://yun.itxdl.cn/online/cto/index.

http://yun.itxdl.cn/online/cto/index.. 以上就介紹了程式設計師面試:電話面試問答Top 42(下),包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
PHP電子郵件:分步發送指南PHP電子郵件:分步發送指南May 09, 2025 am 12:14 AM

phpisusedforsendendemailsduetoitsignegrationwithservermailservicesand andexternalsmtpproviders,自動化intifications andMarketingCampaigns.1)設置設置yourphpenvenvironnvironnvironmentwithaweberswithawebserverserververandphp,確保themailfunctionisenabled.2)useabasicscruct

如何通過PHP發送電子郵件:示例和代碼如何通過PHP發送電子郵件:示例和代碼May 09, 2025 am 12:13 AM

發送電子郵件的最佳方法是使用PHPMailer庫。 1)使用mail()函數簡單但不可靠,可能導致郵件進入垃圾郵件或無法送達。 2)PHPMailer提供更好的控制和可靠性,支持HTML郵件、附件和SMTP認證。 3)確保正確配置SMTP設置並使用加密(如STARTTLS或SSL/TLS)以增強安全性。 4)對於大量郵件,考慮使用郵件隊列系統來優化性能。

高級PHP電子郵件:自定義標題和功能高級PHP電子郵件:自定義標題和功能May 09, 2025 am 12:13 AM

CustomHeadersheadersandAdvancedFeaturesInphpeMailenHanceFunctionalityAndreliability.1)CustomHeadersheadersheadersaddmetadatatatatataatafortrackingandCategorization.2)htmlemailsallowformattingandttinganditive.3)attachmentscanmentscanmentscanbesmentscanbestmentscanbesentscanbesentingslibrarieslibrarieslibrariesliblarikelikephpmailer.4)smtppapapairatienticationaltication enterticationallimpr

使用PHP和SMTP發送電子郵件的指南使用PHP和SMTP發送電子郵件的指南May 09, 2025 am 12:06 AM

使用PHP和SMTP發送郵件可以通過PHPMailer庫實現。 1)安裝並配置PHPMailer,2)設置SMTP服務器細節,3)定義郵件內容,4)發送郵件並處理錯誤。使用此方法可以確保郵件的可靠性和安全性。

使用PHP發送電子郵件的最佳方法是什麼?使用PHP發送電子郵件的最佳方法是什麼?May 08, 2025 am 12:21 AM

ThebestapproachforsendingemailsinPHPisusingthePHPMailerlibraryduetoitsreliability,featurerichness,andeaseofuse.PHPMailersupportsSMTP,providesdetailederrorhandling,allowssendingHTMLandplaintextemails,supportsattachments,andenhancessecurity.Foroptimalu

PHP中依賴注入的最佳實踐PHP中依賴注入的最佳實踐May 08, 2025 am 12:21 AM

使用依賴注入(DI)的原因是它促進了代碼的松耦合、可測試性和可維護性。 1)使用構造函數注入依賴,2)避免使用服務定位器,3)利用依賴注入容器管理依賴,4)通過注入依賴提高測試性,5)避免過度注入依賴,6)考慮DI對性能的影響。

PHP性能調整技巧和技巧PHP性能調整技巧和技巧May 08, 2025 am 12:20 AM

phpperformancetuningiscialbecapeitenhancesspeedandeffice,whatevitalforwebapplications.1)cachingwithapcureduccureducesdatabaseloadprovesrovessetimes.2)優化

PHP電子郵件安全性:發送電子郵件的最佳實踐PHP電子郵件安全性:發送電子郵件的最佳實踐May 08, 2025 am 12:16 AM

ThebestpracticesforsendingemailssecurelyinPHPinclude:1)UsingsecureconfigurationswithSMTPandSTARTTLSencryption,2)Validatingandsanitizinginputstopreventinjectionattacks,3)EncryptingsensitivedatawithinemailsusingOpenSSL,4)Properlyhandlingemailheaderstoa

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。