補充《解析「60k」大佬的19道C#面試題(上)》

【廣州.NET技術俱樂部】微信羣的周杰寫了一篇文章《解析「60k」大佬的19道C#面試題(上)https://www.cnblogs.com/sdflysha/p/20200325-19-csharp-interview-question-from-60k-boss-1.html,寫得很好,很贊!html

我作點補充。web

首先這些知識真的是會在實際項目中用到的,並且還能影響到項目的成敗。若是你對高盛銀行、瑞士銀行等投資銀行和私人銀行的Fintech業務有了解的話,你可能會深有體會。面試

這些知識點和背後的數學原理也在我翻譯的第一本書《.NET併發實戰》裏有十分系統的講到,惋惜由於新冠疫情,該書要延後到六月份才能出版。編程

那麼:windows

第一個問題,爲何不少人反映這些知識在工做中根本用不到呢?微信

由於這些人的主要工做是簡單的web應用。在我所翻譯的《.NET併發實戰》一書裏面講到,web應用是尷尬的並行,因此該書使用了WPF來作案例。併發

 

第二個問題,爲何不少人反映這些知識並無給本身帶來高工資?asp.net

仍是由於這些人的主要工做是簡單的web應用。工做中用不到這些知識,這些知識並無給企業帶來任何商業價值。既然沒有給企業帶來任何商業價值,那麼爲啥企業要給你對應的工資呢?async

 

第三個問題,那麼什麼樣的工做會運用到這些知識點,從而給本身帶來高工資呢?mvvm

就.NET來說,是Windows客戶端和Office應用,一個以商業價值爲導向的、以選擇最合適的技術來作項目的項目經理,若是須要作Windows客戶端和Office應用開發應用,都會首選使用.NET裏的WPF和VSTO。而WPF就會用到這些知識點,這也是我所翻譯的《.NET併發編程實戰》一書使用WPF來作案例的緣由之一。

 

第四個問題,也在用WPF,也用到這些知識點,爲啥就工資不高呢?

技術自己不賺錢,技術所帶來的商業價值才賺錢。好比製造業,自己利潤就不高,那你在製造業裏使用WPF工資不高是正常的。金融業,利潤高,若是你使用了WPF能給企業帶來價值,從而獲得對應的回報就很符合邏輯了。

 

第五個問題,如今互聯網工做機會多,WPF工做機會少啊

工做機會再多,你也只能作一份工做啊。因此工做機會多很少是個僞命題。最重要工資高就能夠了啊。互聯網風頭很猛,然而翻翻世界五百強,裏面有多少家互聯網企業,分別排第幾名,裏面有多少家金融企業,分別排第幾名。

我最近基本不看朋友圈和facebook了,由於看了朋友圈感受某國要亡國了,看了facebook感受另外一個某國要亡國了,我都不知道信哪一個好。IT全名叫作信息技術,咱們作信息技術這行的,也要對信息有個判斷能力啊。不能由於互聯網的聲音大就以爲互聯網鐵定牛。

 

第六個問題,前面的條件都知足了,知識點都掌握了,爲何面試沒過呢?

就我本人所瞭解到的,高盛銀行、瑞士銀行等投資銀行和私人銀行高薪職位面試確定會問數學相關知識,你知道了這些知識點,答不上後面的數學原理,固然過不了面試啦。

 

第七個問題,連這些知識點背後的數學原理都掌握了,爲啥面試仍是沒過呢?

我所翻譯的《.NET併發編程實戰》一書連這些知識點背後的數學原理都講述了。你看了以後跑去面試,仍是沒過,爲啥呢?

當過面試官的同窗都知道,確定會問項目實際經驗啊。

當面試官問到,你能講講你在作實際項目中是如何運用到這些知識點的嗎?

有人就會答,每個asp.net項目都會用到async/await啊。

然而async/await並非何時都適用的啊,能講講何時不適用嗎?

這個問題就真的須要有實際項目經驗的人才能答上了,好比在不一樣代際技術模塊邊界是不適用的,好比在單元測試中要對WPF寫的彈出對話框進行單元測試則不能使用await,由於使用await反而適而其反,功能都不能實現了。

好啦,你這麼回答以後,面試官接着就問第二個問題了,如何對WPF寫的彈出對話框進行單元測試呢?

若是按照winform的寫法來寫WPF,固然是不能對的彈出對話框進行單元測試啦。

可是若是是用MVVM模式來寫WPF,就變得可測試了。微軟官方文檔:使用 MVVM 編寫可測試的表示層https://docs.microsoft.com/zh-cn/archive/msdn-magazine/2013/november/mvvm-writing-a-testable-presentation-layer-with-mvvm

那麼問題裏所指的彈出對話框是指messagebox.show和showdialog嗎?

在實際項目經驗中,當你使用MVVM模式來寫WPF的話,你確定不會再用messagebox.show和showdialog這類方式來彈出對話框。這類方式明顯就不是MVVM模式,viewmodel是不知道view裏面的東西的啊。

總結:以上這些點若是你沒有實際項目經驗,真的就答不上了。

額外再說一個問題,只有async沒有await的狀況下會構成狀態機嗎?

我在實際項目應用中,從工程應用的角度來講,我所見到的是不構成狀態機的。至於周杰所列出的、說會構成的代碼,太過簡單,沒有任何商業價值和工程意義,我不予採納。

 

第八個問題,我已經身在高盛銀行、瑞士銀行等投資銀行和私人銀行裏面了,爲啥個人工資仍是不高?

你所在職位面試時有問到數學嗎?工做過程當中有用到數學嗎?銀行裏這麼大,項目這麼多,有很多項目是用不到數學的,商業價值也不高。若是你所作的項目商業價值不高,用不到數學,那工資不高也是正常的啊。高盛銀行、瑞士銀行只能保證你的工資下限高於其餘公司的工資下限。至於工資上限,不管是哪家公司,都是要看你給公司所創造的商業價值的啊。

 

In the end, 最近這半年,我主要精力集中在以金融科技爲核心的香港.NET俱樂部上,主要研究.NET的商業價值、IT在投資銀行和私人銀行裏的應用,技術方向是WPF、VSTO和人工智能,已經不多關注廣州.NET俱樂部了。今天看到廣州.NET俱樂部還能產出這麼高質量的文章,我心裏甚感欣慰,在此對你們表示感謝。最後給你們一個信心:若是要開發windows桌面端應用和office應用,.NET仍是佔據壟斷地位的。(能夠回頭看看第五個問題的答案)

風險提示:.NET世界之大,各個行業各個應用各個角度均可能得出不一樣的觀點,所以個人以上觀點並不必定適用於你。本文不對你採起本文觀點所形成的損失負責。

 

Q&A:

  1. 問:不止Windows, 遊戲和Web應用給也須要併發啊。
    答:我對遊戲領域不熟,歡迎你寫一篇blog來分享。.NET在Web領域競爭對手太多。
  2. 問:桌面端如今也是以Node.js爲主。答:關於Node.js有句話: 其NPM是創建在浮沙的建築。只要做者一刪除其package,這個建築就垮了,我已經領教過屢次了。講究風險管理的金融業目前尚未使用Node.js來開發桌面端。(也許有,可是我未見到過。)
相關文章
相關標籤/搜索