類別 | 具體技能和麪試問題 | 如今的回答(註明年級) | 畢業後的回答 |
---|---|---|---|
語言 | 最拿手的計算機語言之一,代碼量多少?(偏web前端,PC/Mobile App) | java吧,代碼量不知道有沒有六千 | |
語言 | 最拿手的計算機語言之二,代碼量多少?(偏後端,數據處理,網站後臺,機器學習,等) | 沒有 | |
軟件實現 | (閱讀代碼的能力,實現,單元測試) 你有沒有在別人代碼的基礎上改進,你是怎麼讀懂別人的代碼的,你採起了什麼辦法來保證你的新功能不會影響原來的功能? 你在開發中碰到最複雜的bug是什麼,你是如何解決的? 這個bug出現的緣由是什麼,你在未來應該怎麼去避免bug再出現? |
沒有在別人的代碼基礎上改過代碼; java課設的代碼吧,在開發過程當中遇到的bug應該沒有說什麼最複雜的,要麼就是本身邏輯沒思考要麼問同窗解決的。 |
|
軟件測試 | (測試方法、測試工具、測試實踐、代碼覆蓋率) 你如何測試你本身寫的代碼? 你如何測試別人的代碼? 你掌握了多少種測試工具和方法? 你寫過測試工具麼? 你如何對一個網站進行壓力測試和效能測試? 你如何測試一個軟件的人機界面(ux/ui)? |
目前只會經過print來測試本身寫代碼; 沒有測試過別人的代碼; 經過print測試,單元測試; 沒寫過測試工具; 目前還沒有爲網站進行過壓力測試,也沒有測試過一個軟件的人際界面 |
|
效能分析 | 效能分析,效能改進, 你寫過最複雜的代碼是什麼? 你是如何測量和改進它的效能的,用了什麼工具,如何分析的? |
平時寫代碼時並無關注到效能這一塊 | |
需求分析 | (需求分析,典型用戶,場景,創新) 你作過多少個有實際用戶的項目,用戶最多有多少? 你的項目有什麼創新的地方? |
沒有作過有實際項目的用戶 | |
行業洞察力 | 你最感興趣的領域是什麼? 這個領域過去10年經歷了哪些創新? 你分析過這個領域前10名產品嗎?請分析一下他們的優點,你要進入這個領域,應該如何創新? |
貌似並無最感興趣的領域,目前還在思考畢業出路o(╥﹏╥)o | |
項目管理 | 你參與過項目管理麼? 請描述一下兩個當下流行的開發方法在你的項目中的具體應用狀況; 請問你如何決定項目中各類任務的優先次序,有什麼理論來支持你的作法?若是你忽然發現項目不能按時完成,你做爲項目領導,有什麼辦法? |
參與過,就此次的項目,一、需求溝通階段二、原型設計階段三、技術開發階段四、測試交付階段; | |
軟件設計 | 你作過架構設計,模塊化設計,接口設計麼? 請說明一下你爲什麼是這樣設計,你比較過什麼不一樣的設計方式,你的設計取得了什麼結果? |
java中作過接口設計,將某些對象共有的功能設計成接口,多態,方便使用。 | |
質量意識 | (代碼複審/代碼規範/代碼質量)你是怎麼作代碼複審的,你加入咱們團隊後,能幫助咱們提升代碼質量麼,請具體說怎麼提升? | 查看代碼是否有按照代碼設計規範和代碼風格規範進行編寫,確認代碼是否正確解決了問題。 | |
工具/社區 | Software Tools(performance tool,version control,work item,TFS) 你在各類開發平臺(web,linux,PC,mobile,machine,learning)都是用過什麼樣的工具,本身寫過什麼工具來改進工做效率?你寫的技術博客堅持了多久,讀者最多的是哪一篇? |
eclipse、v有c6.0、vs、NetBeans、微信開發平臺;沒寫過什麼工具; 沒有寫過什麼技術博客 |
|
團隊協做 | Work with others(協同工做,提供反饋,說服別人)請描述你在項目中如何說服同伴採用你提出的更好的解決方案,或者你如何聽取了別人的意見,改進了本身的方案? 你如何說服懶惰的同伴加緊工做,實現團隊的目標? |
用事實數據證實; 根據別人提出意見查看本身代碼是否存在這種問題,思考這個意見是否有被採起的必要,而後再考慮是否要改進本身的方案; |
|
理論素養 | 你上過什麼數學,計算機或其餘理論課,請舉出具體的例子,說明你學到的理論知識如何幫助你解決實際問題。 | 高數、離散、線代、機率,數字邏輯,操做系統; 寫代碼時有時會用到高數的一些知識,操做系統讓學習Linux管理課程比較好理解 |
|
自我管理 | 整年級你專業排名多少?你從剛入學(大學一年級)到如今的排名有變化嗎? 你如何解釋你的排名的變化? |
大三上23名;有變化; 學習動力不夠足,不知道本身應該學些什麼,不知道往哪一個方向走 |
咱們在課程開始之初,曾經要求你們針對軟件工程提出問題:我的閱讀做業2,那麼在通過alpha階段,你們是否對軟件工程有了必定的瞭解?請結合本身提出的問題進行回答前端
問題一java
書中提到:軟件團隊的人員也會流動,新的成員要儘快讀懂已有的程序,瞭解程序的設計。linux
問:在第一節軟件工程課上,老師就講了一下這個學期的教學安排,其中就有提到在作團隊項目時,有個環節就是要進行成員交換。對於這個我不是很能理解,當你在這個團隊已經一段時間,足夠熟悉這個項目的需求以及程序的設計,而且跟其餘成員也有必定的配合度,忽然交換成員,若是是能力較強的成員那卻是影響不大,可是能力稍差的,則又須要必定時間去磨合,去熟悉程序的設計。這不是多費了一份功夫嗎?程序員
回答:我想這個應該是想讓咱們模擬現實生活中軟件團隊人員的流動。在實際中,企業管理上軟件團隊是會流動的,多是現有團隊有解決不了的技術困難,須要有掌握新技術新知識人員的支持,也有多是現有團隊在負責這個項目的同時還兼有其餘任務,因此須要人員的幫忙。而咱們課程設計中的團隊成員交換,就是爲了讓咱們模擬在企業管理上可能出現的人員流動問題咱們要如何去適應它,當咱們被要求調入一個新的團隊,咱們是不可能說拒絕的,不服從上級的要求,因此做爲新的成員咱們就須要儘快的讀懂已有的程序,瞭解程序的設計,儘快的投入到新的團隊裏協助盡心團隊開發。web
問題三面試
書中提到:程序各方面的質量取決於一對程序員中各方面水平較高的那一位編程
問:一個很現實的問題就是隊員的問題。咱們平時上課作實驗有時候就是得搭檔着作,作課設的時候也有須要搭檔着作的時候,那麼在團隊裏總有人能力較強有人能力不強。像在兩我的的結對中,萬一有一方能力較差一點,總不能全部事情都讓另外一方去作。這樣能力較弱的一方都沒學到什麼,更甚者兩個編程能力都不強的人結對又該如何保證代碼質量,要怎麼去處理這個問題?在團隊裏,要怎麼正確的給每一個人分配工做,又要怎麼的把每一個人作的部分整合起來?小程序
回答:寶玉老師在給我一個同窗關於這個問題的回覆是這樣:「一個項目,並不是要教條式的自始至終結對,尤爲是在項目初期選擇一些模塊進行結對便可,結對主要仍是讓水平低的能跟着水平高的養成良好的習慣,造成統一的規範」。結對編程主要是讓咱們有一個互相學習、互相磨合的機會,在水平能力高的人帶領下養成一個良好的編程規範,在相互交流中,相互學習和傳遞經驗。咱們不須要一直規矩着秉着結對的觀念從始至終結對編程,只須要在有些須要的模塊上進行結對便可。後端
問題四微信小程序
書中提到:常常發佈可用的軟件,發佈間隔能夠從幾周到幾個月,能短則短
問:一個可用的軟件,並不等於一個好用,用戶滿意的軟件。在經過百度搜索後看到,提到敏捷開發的一項主張——「簡單」,主張最簡單的解決方案就是最好的解決方案。不要過度構建你的軟件。可是若是是一款簡單的軟件,當它在發佈間隔能短則短的狀況下發布,那麼若是用戶發現並無它所須要的功能,就不會喜歡它,即便以後有更新版本也不必定還會願意去下載。在這發佈間隔短,主張簡單的狀況下,如何保證用戶還會下載最新版,如何保證軟件的用戶使用量?
回答:在這一段時間的軟件工程課程的學習中,咱們有學到兩個概念需求分析和mvp(最小功能集)。在作一個項目開發以前咱們是須要作需求分析的,咱們須要知道咱們所要開發的這個軟件的軟件需求(對產品功能性的需求、產品開發過程的需求、非功能性的需求以及綜合需求),軟件產品的利益相關者,由於不可能一次性知足全部利益相關者的要求,可是要獲取到這個利益相關者的需求,也就是用戶需求。mvp的概念是實現產品的最核心功能。而問題中提到的「在這發佈間隔短,主張簡單的狀況下,如何保證用戶還會下載最新版,如何保證軟件的用戶使用量?」問題,實際上在作敏捷開發前,已經作好了需求分析,瞭解到了用戶所需,而且所說的主張簡單,實際上是mvp最核心的功能,這是在瞭解用戶需求下所作的選擇,因此在這狀況下是有保證軟件的用戶使用量的。
問題一
軟件工程的教學和培訓目標有提到
經過必定的軟件流程,在預計的時間裏發佈"足夠好"的軟件。
問:對於這個"足夠好"的概念還不是很清楚,書上有提到bug的定義:軟件的行爲和用戶的指望值不同。bug的多少能夠用來衡量一個軟件的質量。實際上每一個用戶的指望確定是不同的,有些人以爲這個設計對於他的使用來講就是個bug,可是實際上這個設計就是這麼設計的它不是bug。跟上次做業2提到的問題例子同樣,百度主頁按鍵的設置問題,所謂的"足夠好"是針對佔大多數的用戶的嗎?
問題二
第一章中提到
軟件開發的複雜性:大型軟件(操做系統、辦公軟件、搜索引擎)有超過百萬行的源代碼,上萬個不一樣的文件。而軟件工程師一般一次只能看到30—80行源代碼(至關於顯示器的一屏),他們的智力、記憶力和常人差很少。
問:那麼在這種狀況下,咱們應該怎麼才能發現的了錯誤而且可以將錯誤排除掉呢?在這種狀況下,我以爲進行排錯是有必定難度的,既然軟件工程師的記憶力跟常人差很少,只能看到30-80行代碼,由於咱們記憶量有限,當咱們記憶過多的東西的時候就容易忘記以前的所記憶的東西,那麼咱們應該怎麼去鍛鍊本身發現錯誤和排除錯誤的能力呢?有時候在咱們編寫代碼的時候,也許只是一處代碼寫錯了,可是卻提示了一大片的報錯信息,這種時候咱們應該怎麼解決?
問題三
在第八章需求分析有提到
軟件開發不可能一次知足全部利益相關者的要求,可是咱們必定要讓相關角色在這個階段有機會提出他們的需求和意見。
問:書中提到的軟件的相關利益者有不少,用戶、顧客、市場分析着、監管機構、系統/應用集成商、軟件團隊和軟件工程師等,雖然咱們說到要有機會讓相關角色參與到提需求和提意見中,可是咱們應該如何判斷在這個階段哪一個角色的需求和意見是最須要考慮的,由於咱們作不到知足全部相關角色的需求和意見,因此做爲一個軟件開發團隊,咱們應該怎麼協調某個階段裏相關軟件利益相關者的需求和意見的優先級呢?
問:在開發的時候,每一個人都會分配必定的任務去完成。在咱們此次alpha階段的開發中,咱們作的是微信小程序項目,關於小程序編程語言的學習,咱們在開發中都是邊學邊作的,可是每一個人對於熟悉一門新的編程語言的能力是不同的,有的人理解能力高几個小時就能摸索出大概的門路,可是有的人要花個幾天的時間來理解這門語言,然而咱們如今是處於alpha衝刺階段,咱們是應該讓這我的繼續本身學習他那部分任務代碼的學習,仍是應該分出人員去指導他的學習,這樣會影響衝刺階段的任務的完成嗎?咱們在此次開發並無分配人員去指導,最後那部分功能沒有實現成功,咱們就把它取消掉了。這時候咱們應該怎麼處理?
問:在此次項目alpha衝刺階段,咱們只有兩週的時間來進行衝刺,由於時間比較短,有時候會遇到項目就要截止發佈內部測試版了,可是有些功能或者bug一直達不到預期的效果(未實現),這種時候咱們要怎麼進行測試,在開發人員已知本身功能還沒有完善或bug還未解決的前提下,咱們還要進行測試嗎,或者直接發佈內部測試版了?咱們應該怎麼去衡量着二者之間的關係?在測試階段,由於咱們小組有五人,開發人員三人,其他兩人測試(經驗能力較其餘比較不足)開發人員是應該加入到測試中,仍是說主導項目的測試,若是是參與到項目測試中,然而測試人員編程能力,經驗不足沒法寫出合適的測試用例,這該怎麼解決,若是是主導項目測試,那麼安排的測試人員的又有什麼用?