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

程式設計師面試:電話面試問答Top 42(上)

Aug 08, 2016 am 09:27 AM
java sql xml

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

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

下面是幾乎

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

1.

從雜湊表,二叉樹和鍊錶中取元素需要多少時間?如果你有數百萬記錄呢?

雜湊表需要

O(1)時間,二叉樹需要O(logN) (N是樹中節點數 ())) (鏈) N是鍊錶中節點數)。如果資料結構運作正常(例如雜湊表沒有或只有相對少量衝突,二叉樹是平衡的),數百萬張記錄並不影響效率。如果工作不正常,那麼效率會隨著記錄數上升而下降。

2.

覆蓋

(Overriding)和重載(Overloading)和重載(Overloading)?   (detailed answer)

覆蓋在運行時決定,重載是在編譯時決定。且覆蓋和重載的機制不同,例如在

Java中,重載方法的簽章必須不同於原先方法的,但對於覆蓋簽章必須相同。

3. fork

一個行程和產生一個執行緒有什麼不同?

當你

fork一個進程時,新的進程將執行和父進程相同的程式碼,只是在不同的記憶體空間中。但當你在已有進程中產生一個執行緒時,它會產生一個新的程式碼執行路線,但共享同一個記憶體空間。

4. 什麼是臨界區? (answer)

臨界區是一段程式碼,十分重要,在多執行緒中同一時間只能被一個執行緒執行。可以用信號量或互斥量來保護臨界區。在Java中你可以用synchronized關鍵字或ReentrantLock來保護臨界區。

5. 值類型和引用型態有何不同? (answer)

值類型是更最佳化的類型,總是不可變的(immutable),例如Java、原始的 doublefloat。引用類型指向一個對象,可能是可變的,也可能是不變的。你也可以說值類型指向一個值,引用型別指向一個物件。 6.

什麼是在進程中的堆疊和堆疊? (detailed answer)

在同一個進程中,有兩塊不同的記憶體區域。以Java來說,堆疊用來儲存原始值和指向物件的參考類型,但物件本身總是在堆中被建立。堆和棧的一個重要區別是,堆記憶體被所有執行緒共享,但每個執行緒都有自己的棧。

7.

什麼是版本控制? (answer)

版本控制是用來儲存程式碼和管理程式碼庫版本的軟體,例如SVN

CVS ClearCase。它們在對比程式碼、審查程式碼和從之前的穩定版本構造時十分有效率。所有的專業開發都使用某種版本控制工具,否則你無法有效的管理程式碼,尤其是如果有20個開發者在同一個程式碼庫上工作的時候。版本控制工具在維持程式碼庫一致性和處理程式碼衝突上扮演著十分重要的角色。 8. 什麼是強型程式設計語言? (answer)

在強類型語言中,編譯器確保類型的正確性,例如你無法在

String類型中存放數字,反之亦然。 Java是強類型語言,因此存在各種資料型別(如

intfloat )。你只能將相容的值存入對應的類型。與此相反,弱類型語言不要求在編譯時進行類型檢查,它們根據上下文處理值。 PythonPerl是兩個常見的弱類型程式設計語言的例子,你可以將數字組成的字串保存在數字類型中。 9. 可否描述一下有效(valid)的ML的區別? 格式正確的XML

有根元素,所有標籤都是正確關閉的,屬性是正確定義的,它們的值正確地加上了引號。另一方面,有效的XML

可以根據一個XSD檔案或模式(schema)進行驗證。所以一個XML可能是格式正確但不有效的(因為包含不被模式允許的標籤)。 10. DOM

SAX語法分析器有什麼區別? (detailed answer)DOM語法分析器是駐留記憶體的,將整個XML文件裝載到內存中,並建立​​一個語法 SAX語法分析器是一個基於事件的語法分析器,所以它根據收到的事件(如開始標籤、結束標籤、屬性開始和屬性結束)來對

XML

文件進行語法分析。根據他們的分析方法,

DOM

語法分析器並不適用於大的XML文件,因為它會佔用大量的記憶體空間,你的進程可能會耗盡記憶體。應該用SAX分析大的檔案。對於小的文件,

DOM

往往比SAX快很多。 11. 執行緒和進程的關係是什麼? (detailed answer)

一個行程可以有多個線程,但一個執行緒總是屬於唯一的行程。兩個行程不能共享記憶體空間,除非它們有意透過共享記憶體進行進程間通訊。但是同一進程的兩個執行緒總是共享相同的記憶體。

12. 不可變(immutable)類是什麼意思? (detailed answer)

一個類,如果在創建之後它的狀態就不能被改變,那麼他就是不可變的。例如Java中的String。一旦你創建了一個String,例如“Java”,你就不能再改變它的內容。任何對這個字串的改變(例如轉換到大寫、與另一個String連接)將建立一個新的物件。不可變的物件在平行程式設計中很有用,因為它們可以在進程間被共用,不需要擔心同步。事實上,整個函數是程式設計的模型都是在不可變物件上建構的。

13. 你為何要創建模擬(mock)物件? (answer)

模擬物件在測試軟體中一個獨立的單元時很有用,事實上,存根(stub)和模擬都是創建自動化單元測試的有力工具。假設你在寫一個顯示貨幣兌換率的程序,但沒有一個可以連通的URL,現在如果想測試你的代碼,可以用模擬對象。在Java的世界中,有許多框架可以為你產生強大的模擬對象,例如MockitoPowerMock

14. 什麼是SQL注入?

SQL注入是一種安全漏洞,它使得入侵者可以從系統中竊取資料。任何從使用者那裡得到輸入並不加驗證地創建SQL查詢的系統都可能被SQL注入攻擊。在這樣的系統中,入侵者可以輸入SQL程式碼,而不是數據,來取得額外的數據。有許多用敏感資訊(如使用者id、密碼和個人資訊)被人利用這種漏洞取得的實例。 Java中,你可以用Prepared語句來避免SQL注入。

15. SQL中,內連接(inner join)中,內連接(inner join)中,內連接 (answer)

SQL中,主要有兩種連接類型,內連接和外連接。外連接包括右外連接和左外連接。內連接和左連接的主要區別是,內連接中兩個表都匹配的記錄才被選中,左連接中兩個表都匹配的記錄被選中,外加左表的所有記錄都被選中。要留意包含「所有」的查詢,它們往往要求左連接,例如寫一個SQL查詢來找所有的部門和它們的僱員人數。如果你用內連接處理這個查詢,你會漏掉沒有人工作的空部門。

16. MVC中的V代表什麼,代表什麼? (answe

MVC模式中,VView)是視圖。視圖是使用者看到的東西,例如網頁。這是一個非常重要的web應用開發設計模式,它基於關注點分離原則,目的是不同模組可以獨立修改,不影響其他模組。在Java的世界中,有許多提供MVC模式的開源框架,例如Struts 2順便一提模型是實際的業務對象,例如使用者、員工、訂單,控制器用來將請求分發給正確的處理單元。 17. 類和對象的區別是什麼? (detailed answer)類別是用來建立物件的設計圖。一個類別包括程式碼和行為,一個物件包括狀態和行為。要建立一個對象,你必須建立一個表達對象結構的類別。類別也被用來在記憶體中映射對象,在Java中,JVM替你完成這項工作。

18. 什麼是疏耦合(loose-coupling)

疏耦合是一種值得追求的軟體特性,它使得軟體一個部分的修改不會影響到其他的部分。例如,在一個疏耦合的軟體中,對UI佈局的改變不應該影響後端的類別結構。

19. 組合(composition),聚合(regation)) (detailed answer)關聯的意思是兩個物件是相互連結的。組合是關聯的一種形式,即一個物件由多個物件組成,但是它們必須共存,例如人體由各種器官組合而成,獨立的器官不能生存,它們必須在身體內發揮作用。聚合也是關聯的一種形式,表示物件的集合,例如城市是居民的聚合。

20.

介面和抽象類別有什麼區別?

(detailed answer)這是所有程式設計師面試最經典的問題。接口是最純粹的抽象形式,沒有任何具體的東西。抽象類別是一些抽象和具體事物的組合。這個區別在不同語言中可能會不同,例如在

Java

中你可以擴展(extend)多個接口,但只能繼承一個抽象類別。更詳細的討論見於詳細答案。

21.

什麼是單元測試?

(answer)單元測試是測試獨立單元(而不是整個應用程式)功能性的一種方法。在不同語言中,有許多工具可以做單元測試。例如在

Java

中,你可以用JUnitTestNG來寫單元測試。單元測試經常在建置時自動運行,或在持續的環境(例如Jenkins)中運行。 免費領取

LAMP兄弟連原創🜎盤細說PHP》精要版,詳情諮詢官網客服:http://www.lampbrother.netPHPCMSonline/H/ .php?u=5微信開發http://yun.itxdl.cn/online/weixin/index.php?u=5

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

Javascript /js/index.php?u=5

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

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

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱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

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

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1318
25
PHP教程
1269
29
C# 教程
1248
24
PHP的影響:網絡開發及以後 PHP的影響:網絡開發及以後 Apr 18, 2025 am 12:10 AM

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP與Python:用例和應用程序 PHP與Python:用例和應用程序 Apr 17, 2025 am 12:23 AM

PHP適用於Web開發和內容管理系統,Python適合數據科學、機器學習和自動化腳本。 1.PHP在構建快速、可擴展的網站和應用程序方面表現出色,常用於WordPress等CMS。 2.Python在數據科學和機器學習領域表現卓越,擁有豐富的庫如NumPy和TensorFlow。

SQL的目的:與MySQL數據庫進行交互 SQL的目的:與MySQL數據庫進行交互 Apr 18, 2025 am 12:12 AM

SQL用於與MySQL數據庫交互,實現數據的增、刪、改、查及數據庫設計。 1)SQL通過SELECT、INSERT、UPDATE、DELETE語句進行數據操作;2)使用CREATE、ALTER、DROP語句進行數據庫設計和管理;3)複雜查詢和數據分析通過SQL實現,提升業務決策效率。

C和XML:探索關係和支持 C和XML:探索關係和支持 Apr 21, 2025 am 12:02 AM

C 通過第三方庫(如TinyXML、Pugixml、Xerces-C )與XML交互。 1)使用庫解析XML文件,將其轉換為C 可處理的數據結構。 2)生成XML時,將C 數據結構轉換為XML格式。 3)在實際應用中,XML常用於配置文件和數據交換,提升開發效率。

XML在RSS中的優勢:技術深度潛水 XML在RSS中的優勢:技術深度潛水 Apr 23, 2025 am 12:02 AM

XML在RSS中具有結構化數據、可擴展性、跨平台兼容性和解析驗證的優勢。 1)結構化數據確保內容的一致性和可靠性;2)可擴展性允許添加自定義標籤以適應內容需求;3)跨平台兼容性使其在不同設備上無縫工作;4)解析和驗證工具確保Feed的質量和完整性。

SQL和MySQL:了解關係 SQL和MySQL:了解關係 Apr 16, 2025 am 12:14 AM

SQL和MySQL的關係是標準語言與具體實現的關係。 1.SQL是用於管理和操作關係數據庫的標準語言,允許進行數據的增、刪、改、查。 2.MySQL是一個具體的數據庫管理系統,使用SQL作為其操作語言,並提供高效的數據存儲和管理。

phpmyadmin:揭示其與SQL的關係 phpmyadmin:揭示其與SQL的關係 Apr 14, 2025 am 12:11 AM

phpMyAdmin通過SQL命令實現對數據庫的操作。 1)phpMyAdmin通過PHP腳本與數據庫服務器通信,生成並執行SQL命令。 2)用戶可以在SQL編輯器中輸入SQL命令進行查詢和復雜操作。 3)性能優化建議包括優化SQL查詢、創建索引和使用分頁。 4)最佳實踐包括定期備份、確保安全性和使用版本控制。

用於數據分析的SQL:商業智能的高級技術 用於數據分析的SQL:商業智能的高級技術 Apr 14, 2025 am 12:02 AM

SQL的高級查詢技巧包括子查詢、窗口函數、CTE和復雜JOIN,能夠處理複雜數據分析需求。 1)子查詢用於找出每個部門工資最高的員工。 2)窗口函數和CTE用於分析員工的薪資增長趨勢。 3)性能優化策略包括索引優化、查詢重寫和使用分區表。

See all articles