演算法工程師面試題
❶ .net軟體工程師筆試題和面試題答案目
說明:
1. 本試題分可選題和必選題兩部分。必選題需要根據題目要求回答。
2. 本試題考試時間為 0.5 小時。
3. 本試題完成後,請標明你的姓名以及聯系方式(包括:Email、聯系電話)。
注意事項:
1、在規定時間內自行選題(在可選題部分中),選題數目不能少於2個,難度不限,編程語言不限(除非題目中有特別說明)。
2、盡可能用代碼段或函數完成,或自然語言來描述解題方法。
3、評分標准跟所選題目的數量和完成度無關,請盡可能展示自己的編程能力、思路、經驗和風格。
可選題部分:
(1) 請使用目錄樹遍歷的方法統計出指定邏輯驅動器的目錄總數及文件總數,並顯示硬碟空間浪費的百分比
> 類別:系統類
> 難度:中級
(2) 列出區域網中的所有工作組和計算機名,並可顯示每一個計算機的共享目錄
> 類別:系統類
> 難度:高級
(3) 寫一個類似OICQ點對點消息發送軟體,僅實現發送和接收的功能即可
> 類別:網路編程類
> 難度:高級
(4) 為DataGrid(WinForm)增加ComboBox樣式的數據列
> 類別:資料庫編程類
> 難度:中級
(5) 一維數組iArray[10],類型為int。請使用選擇排序演算法對其排序,並輸出結果。
> 類別:數據演算法
> 難度:初級
(6) 請新建一個類(名稱為ClassA),該類必須含有三個屬性:姓名(字元串),性別(布爾值),年齡(數值)。
用該類建立一個鏈表,該鏈表有以下演算法:創建、添加、插入、刪除和查找,演算法內不用
考慮內存的分配與釋放
> 類別:數據結構
> 難度:中級
Public Class ClassA{
Public string name;
Public boolean sex;
Public int age;
}
(7) 在上題的基礎上,實現以下兩個功能:
a. 保存該鏈表為二進制文件test.lib(存放在本題目路徑之下)
b. 讀取生成的二進制文件到鏈表中。
> 類別:數據結構
> 難度:中級
(8) 你所知道有哪些操作平台,談談你對他們的見解
> 類別:其它類
> 難度:無
(9) 你所知道有哪些編程語言,談談你對他們的看法,你使用過哪些語言,熟練程度
如何,編寫過什麼樣的程序
> 類別:其它類
> 難度:無
(10) 請用VBScript或JavaScript語言中任何一種,與CSS結合,編寫出移動Layer的例子,具體效果與Windows窗體類似。
> 類別:Web
> 難度:中級
必選題部分(必須用VS2003開發):
(1) C#回答題:請描述抽象類、介面、結構三者的區別:
抽象類當中的屬性和方法不能被其子類重寫,介面只定義其中的屬性和方法,其方法的實現部分必須在其繼承的子類中實現,結構和類比較類似,也有其屬性和方法,但不能被繼承和實例化.
(2) C#編程題:在WinForm 中實現類似於Windows 資源管理器的功能,左邊有目錄樹,點擊目錄樹,在右邊顯示該目錄下的所有文件。查看方式分:大圖標、小圖標、列表、詳細資料等。
(3) 寫一個簡單的存儲過程或觸發器,要求能正確運行(資料庫採用Oracle,自建測試表)
Create table test
(id int primary key,
Name varchar2(10) not null,
Address varchar2(50),
Tel varchar2(18)
);
Create or replace procere InsertTest as
Declare IDN test.id%type;
Declare VName test.name%type;
Declare VAddress test.address%type;
Declare VTel test.tel%type;
Begin
Select nvl(decode(max(id),0,1,max(id)),1) + 1 into IDN
End
When
4 更多相關文章推薦參考:
安捷倫筆試真題
中興資料庫筆試真題
工商銀行歷年考試真題
❷ 如何面試演算法工程師
牆面是演算法工程師話你基本上你要有這個工程師的證,還有就是一些個人資料的簡歷證明
❸ 都快2021年了,演算法崗位應該怎樣准備面試
說到演算法崗位,現在網上的第一反應可能就是內卷,演算法崗位也號稱是內卷最嚴重的崗位。針對這個問題,其實之前我也有寫過相關的文章。這個崗位競爭激烈不假,但我個人覺得稱作內卷有些過了。就我個人的感覺,這幾年的一個大趨勢是從迷茫走向清晰。
早在2015年我在阿里媽媽實習的時候,那個時候我覺得其實對於演算法工程師這個崗位的招聘要求甚至包括工作內容其實業內是沒有一個統一的標準的。可以認為包括各大公司其實對這個崗位具體的工作內容以及需要的候選人的能力要求都不太一致,不同的面試官有不同的風格,也有不同的標准。
我舉幾個例子,第一個例子是我當初實習面試的時候,因為是本科生,的確對機器學習這個領域了解非常非常少,可以說是幾乎沒有。但是我依然通過了,通過的原因也很簡單,因為有acm的獲獎背景,面試的過程當中主要也都是一些演算法題,都還算是答得不錯。但是在交叉面試的時候,一位另一個部門的總監就問我有沒有這塊的經驗?我很明確地說了,沒有,但是我願意學。
接著他告訴我,演算法工程師的工作內容主要和機器學習相關,因此機器學習是基本的。當時我就覺得我涼了,然而很意外地是還是通過了面試。
核心能力
由於我已經很久沒有接觸校招了,所以也很難說校招面試應該怎麼樣准備,只能說說如果是我來招聘,我會喜歡什麼樣的學生。也可以理解成我理解的一個合格優秀的演算法工程師應該有的能力。
模型理解
演算法工程師和模型打交道,那麼理解模型是必須的。其實不用說每一個模型都精通,這沒有必要,面試的時候問的模型也不一定用得到。但更多地是看重這個人在學習的時候的習慣,他是淺嘗輒止呢,還是會刨根究底,究竟能夠學到怎樣的地步。
在實際的工作當中我們可能會面臨各種各樣的情況,比如說新加了特徵但是沒有效果,比如升級了模型效果反而變差了等等,這些情況都是有可能發生的。當我們遇到這些情況之後,需要我們根據已知的信息來推理和猜測導致的原因從而針對性的採取相應的手段。因此這就需要我們對當前的模型有比較深入地了解,否則推導原因做出改進也就無從談起。
所以面試的時候問起哪個模型都不重要,重要的是你能不能體現出你有過深入的研究和理解。
數據分析
演算法工程師一直和數據打交道,那麼分析數據、清洗數據、做數據的能力也必不可少。說起來簡單的數據分析,這當中其實牽扯很多,簡單來說至少有兩個關鍵點。
第一個關鍵點是處理數據的能力,比如SQL、hive、spark、MapRece這些常用的數據處理的工具會不會,會多少?是一個都不會呢,還是至少會一點。由於各個公司的技術棧不同,一般不會抱著候選人必須剛好會和我們一樣的期待去招人,但是候選人如果一無所知肯定也是不行的。由於學生時代其實很少接觸這種實踐的內容,很多人對這些都一無所知,如果你會一兩個,其實就是加分項。
第二個關鍵點是對數據的理解力,舉個簡單的例子,比如說現在的樣本訓練了模型之後效果不好,我們要分析它的原因,你該怎麼下手?這個問題日常當中經常遇到,也非常考驗演算法工程師對數據的分析能力以及他的經驗。數據是水,模型是船,我們要把船駛向遠方,只懂船隻構造是不行的,還需要對水文、天象也有了解。這樣才能從數據當中捕捉到trick,對一些現象有更深入的看法和理解。
工程能力
雖然是演算法工程師,但是並不代表工程能力不重要,相反工程能力也很重要。當然這往往不會成為招聘的硬性指標, 比如考察你之前做過什麼工程項目之類的。但是會在你的代碼測試環節有所體現,你的代碼風格,你的編碼能力都是你面試的考察點之一。
並不只是在面試當中如此,在實際工作當中,工程能力也很關鍵。往小了說可以開發一些工具、腳本方便自己或者是團隊當中其他人的日常工作,往大了說,你也可以成為團隊當中的開發擔當,負責其團隊當中最工程的工作。比如說復現一篇paper,或者是從頭擼一個模型。這其實也是一種差異化競爭的手段,你合理地負擔起別人負擔不了的工作,那麼自然就會成為你的業績。
時代在變化,行業在發展,如今的校招會問些什麼早已經和當年不同了。但不管怎麼說,這個崗位以及面試官對於人才的核心訴求幾乎是沒有變過的,我們從核心出發去構建簡歷、准備面試,相信一定可以有所收獲。
❹ linux系統工程師面試題附答案
一、簡答題
1.如何將本地80埠的請求轉發到8080埠,當前主機IP為192.168.16.1,其中本地網卡eth0:
答:# iptables -t nat -A PREROUTING -d 192.168.16.1 -p tcp --dport 80 -j DNAT --to 192.168.16.1:8080
或 者:# iptables -t nat -A PREROUTING -i eth0 -d 192.168.16.1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
2.什麼是NAT,常見分為那幾種,DNAT與SNAT有什麼不同,應用事例有那些?
SNAT,DNAT,MASQUERADE都是NAT。
MASQUERADE是SNAT的一個特例。
SNAT是指在數據包從網卡發送出去的時候,把數據包中的源地址部分替換為指定的IP,這樣,接收方就認為數據包的來源是被替換的那個IP的主機。
MASQUERADE是用發送數據的網卡上的IP來替換源IP,因此,對於那些IP不固定的場合,比如撥號網路或者通過dhcp分配IP的情況下,就得用MASQUERADE。
DNAT,就是指數據包從網卡發送出去的時候,修改數據包中的目的IP,表現為如果你想訪問A,可是因為網關做了DNAT,把所有訪問A的數據包的目的IP全部修改為B,那麼,你實際上訪問的是B
因為,路由是按照目的地址來選擇的,因此,DNAT是在PREROUTING鏈上來進行的,而SNAT是在數據包發送出去的時候才進行,因此是在POSTROUTING鏈上進行的。
3.包過濾防火牆與代理應用防火牆有什麼區別,能列舉幾種相應的產品嗎?
4.iptables是否支持time時間控制用戶行為,如有請寫出具體操作步驟。
5.說出你知道的幾種linux/unix發行版本。
Redhat、CentOS、Fedora、SuSE、Slackware、Gentoo、Debian、Ubuntu、FreeBSD、Solaris、SCO、AIX、HP…
6.列出linux常見打包工具並寫相應解壓縮參數(至少三種)
7.計劃每星期天早8點伺服器定時重啟,如何實現?
8.列出作為完整郵件系統的軟體,至少二類。
9,當用戶在瀏覽器當中輸入一個網站,說說計算機對dns解釋經過那些流程?註:本機跟本地dns還沒有緩存。
答:
a.用戶輸入網址到瀏覽器;
b.瀏覽器發出DNS請求信息;
c.計算機首先查詢本機HOST文件,看是否存在,存在直接返回結果,不存在,繼續下一步;
d.計算機按照本地DNS的順序,向合法dns伺服器查詢IP結果;
e.合法dns返回dns結果給本地dns,本地dns並緩存本結果,直到TTL過期,才再次查詢此結果;
f.返回IP結果給瀏覽器;
g.瀏覽器根據IP信息,獲取頁面;
10,我們都知道,dns既採用了tcp協議,又採用了udp協議,什麼時候採用tcp協議?什麼時候採用udp協議?為什麼要這么設計?
答:這個題需要理解的東西比較的多,分一下幾個方面
a,從數據包大小上分:UDP的最大包長度是65507個位元組,響應dns查詢的時候數據包長度超過512個位元組,而返回的只要前512個位元組,這時名字 解釋器通常使用TCP從發原來的請求。
b,從協議本身來分:大部分的情況下使用UDP協議,大家都知道UDP協議是一種不可靠的協議,dns不像其它的使用UDP的Internet應用 (如:TFTP,BOOTP和SNMP等),大部分集中在區域網,dns查詢和響應需要經過廣域網,分組丟失和往返時間的不確定性在廣域網比區域網上更 大,這就要求dns客戶端需要好的重傳和超時演算法,這時候使用TCP。
11,一個EXT3的文件分區,當使用touch test.file命令創建一個新文件時報錯,報錯的信息是提示磁碟已滿,但是採用df -h命令查看磁碟大小時,只使用了,60%的磁碟空間,為什麼會出現這個情況,說說你的理由。
答:兩種情況,一種是磁碟配額問題,另外一種就是EXT3文件系統的設計不適合很多小文件跟大文件的一種文件格式,出現很多小文件時,容易導致inode 耗盡了。
12,我們都知道FTP協議有兩種工作模式,說說它們的大概的一個工作流程?
FTP兩種工作模式:主動模式(Active FTP)和被動模式(Passive FTP)
在主動模式下,FTP客戶端隨機開啟一個大於1024的埠N向伺服器的21號埠發起連接,然後開放N+1號埠進行監聽,並向伺服器發出PORT N+1命令。
伺服器接收到命令後,會用其本地的FTP數據埠(通常是20)來連接客戶端指定的埠N+1,進行數據傳輸。
在被動模式下,FTP客戶端隨機開啟一個大於1024的埠N向伺服器的21號埠發起連接,同時會開啟N+1號埠。然後向伺服器發送PASV命令,通 知伺服器自己處於被動模式。伺服器收到命令後,會開放一個大於1024的埠P進行監聽,然後用PORT P命令通知客戶端,自己的數據埠是P。客戶端收到命令後,會通過N+1號埠連接伺服器的埠P,然後在兩個埠之間進行數據傳輸。
總的來說,主動模式的FTP是指伺服器主動連接客戶端的數據埠,被動模式的.FTP是指伺服器被動地等待客戶端連接自己的數據埠。
被動模式的FTP通常用在處於防火牆之後的FTP客戶訪問外界FTp伺服器的情況,因為在這種情況下,防火牆通常配置為不允許外界訪問防火牆之後主機,而只允許由防火牆之後的主機發起的連接請求通過。
因此,在這種情況下不能使用主動模式的FTP傳輸,而被動模式的FTP可以良好的工作。
13.編寫個shell腳本將當前目錄下大於10K的文件轉移到/tmp目錄下
Q:主要是考察awk 這些的用法
#/bin/sh
#Programm :
# Using for move currently directory to /tmp
for FileName in `ls -l |awk ‘$5>10240 {print $9}’`
do
mv $FileName /tmp
done
ls -la /tmp
echo “Done! ”
14.apache有幾種工作模式,分別介紹下其特點,並說明什麼情況下採用不同的工作模式?
apache主要有兩種工作模式:prefork(apache的默認安裝模式)和worker(可以在編譯的時候加參數–with-mpm- worker選擇工作模式)