2023年7月14日C 軟體工程師面試

2021-10-08 03:02:18 字數 4269 閱讀 8760

1、判斷**對錯:給你一段**,一般有乙個函式,然後執行該函式,問你對錯,若是錯誤指出錯誤的地方。這種題目我個人感覺很考個人敲**的熟練程度和對**的敏感度,如果你對**很敏感的話,直覺就會告訴你這段**有問題。

2、寫出**執行結果:給你一段**,然後最終要求return某個引數,一般來說這個引數加了很多*或者&。這種題目很坑人的,一不小心就會做錯。

例題1:

intmain()

輸出結果是:678

解析:*ptr是指標,指向陣列arr[

]的頭位址;%s輸出字串,從該位址一直往後輸出字串;

ptr+

5之後指向arr陣列中的「6」,所以將「678」作為字串輸出。

如果ptr沒有+

5這一步,那麼他直接會輸出「12345678」

例題2:

void main (

void

)程式完成後x的值是什麼?

輸出結果:15

解析:正確時返回輸出的字元總數,錯誤時返回負值,輸入輸出流錯誤標誌將被置值。

3、簡答題:主要是問一些基礎概念,特別喜歡問某些概念的區別。

題目:static_cast 、dynamic_cast、reinterpret_cast和const_cast的區別?

解析:static_cast運算子用於將表示式的值強制轉換為指定的型別,但沒有執行時需要進行型別檢查來保證轉換安全性。

dynamic_cast運算子用來處理一種「安全向下轉換」,可以在執行時決定真正的轉換型別。如果是安全的(也就是說:如果基類指標或者引用確

實指向乙個派生類物件)這個運算子會傳回適當轉型過的指標;如果不安全,這個運算子會傳回空指標(也就是說:基類指標或者引用沒有指向

乙個派生類物件)。

reinterpret_cast運算子用於底層的強制轉型,在型別之間指向的內容不做任何型別的檢查和轉換。導致實現依賴(就是說,不可移植)的結

果,例如:將乙個指標轉型為乙個整數。這樣的強制型別在底層**以外應該極為罕見操作結果只是簡單的從乙個指標到別的指標的值的二進位制

拷貝。const_cast運算子用來將物件的常量性刪除,使常量可以被修改。例如:常量指標被轉化成非常量的指標,並且仍然指向原來的物件;常量引

用被轉換成非常量的引用,並且仍然指向原來的物件;

從學習程式設計的角度來說,我覺得真的需要天賦和興趣愛好,如果僅僅是為了面試,那一定要多練該類題目。

技術hr有1到2位,我那時只有一位技術hr。

1、一般來說,面試官會先讓你做乙個自我介紹,我提前先準備了一下,大概內容如下:

自我介紹:尊敬的面試官,您好,我叫+++,來自廣東梅州,今年6月完成在廣州大學電腦科學與技術專業的學習,並已領取到畢業證書和學士學位證書。

社團經驗:在大學期間,曾擔任團支書並在團委學生會工作,曾組織過多次班級和社團活動,有較豐富的社團活動組織經驗。

結尾:我的介紹到此結束,謝謝。

2、在進入面試之前並在面試過程中,技術hr會看你做的筆試題目,然後根據你做的筆試題來進行相應提問,我在2023年7月14號那天筆試做得很渣渣,所以被懟得很慘。因為我筆試做得很糟糕,所以技術hr沒有問太多筆試上的題目,就問了一下最後乙個分析題。

question:現有乙個遊戲需要實現玩家等級排位,請詳細描述具體實現過程:

1.將等級前1000名的玩家按等級顯示到榜單上,若等級相同,則先到達該等級的排到前面;

2.若是玩家有公升級,該如何處理?

myanswer:需要對所有玩家進行排序,然後將前1000名的玩家按等級顯示,因為考慮到玩家等級若有相同的情況,所以我考慮用「時間戳」來

標記達到該等級的時間,按照時間先後來進行排位;若是玩家有公升級,首先我需要判斷玩家是否上榜,所以先跟榜單上最後一名玩家的等級進

行對比,若是需要上榜則判斷插入位置直接進行插入到榜單表中,若是不能上榜,則不需要對榜單表進行修改。

3、技術hr除了問筆試的題目之外,他會問一些額外的一些題目,這些題目一般都比較基礎,大家可以從網上的面經上訓練,我那時問的題目都是經典的c++面試題。

question1:c++的多型是如何實現的?

answer1:主要是利用虛函式實現多型。

question2:虛函式和純虛函式的區別?

answer2:虛函式有定義並有相應的實現**,使用虛函式是為了允許用基類的指標來呼叫子類的這個函式;而純虛函式只有定義沒有實現,定

義純虛函式是為了實現乙個介面,起到乙個規範的作用,是乙個不被實現的函式。

question3:含基類的建構函式和析構函式如何實現?

answer3:建構函式和析構函式都不能被繼承,其具體實現過程如下:先執行基類的建構函式,再執行派生類的建構函式中呼叫基類的構造函

數,然後執行派生類的析構函式銷毀派生類物件,最後執行基類析構函式銷毀基類物件。

question4:什麼是深拷貝?它與淺拷貝的區別在**?

answer4:如果拷貝的只有值沒有引用,那淺拷貝和深拷貝沒有差別,都會將原有物件複製乙份,產生乙個新物件,對新物件裡的值進行修改不

會影響原有物件,新物件和原物件完全分離開。如果拷貝的物件裡包含引用,那淺拷貝和深拷貝是不同的,淺拷貝雖然將原有物件複製乙份,

但是依然儲存的是引用,對新物件的引用中的值進行修改,會改變原物件中的值,新物件和原物件並沒有完全分離開。而深拷貝則不同,

它會將原物件裡的引用也新建立乙個,然後放的是新的引用,將新物件和原物件完全分離開。

question5:快速排序的時間複雜度?最好的情況下如何?最壞的情況下如何?

answer5:o(nlogn),最好的情況是o(nlogn),最壞的情況是o(n^

2)ps:快速排序:通過一趟排序將資料分成兩部分,其中一部分的所有資料比另一部分的任乙個資料都要小,然後再對每部分資料進行快速排

序,整個過程可用遞迴來實現。

十大常用的排序演算法

1、首先,他先跟我介紹了一下公司的具體情況,然後先問:「我對這個職位是如何看待的,為什麼選擇應聘這個崗位?」

我回答他「因為c++比較難,並且在公司實際應用中涉及到很多底層的東西,簡單來說c++門檻很高,順利的話都需要2~3年才能踏入這個門檻,並且c++需求比較少,但是我大學四年都學的是c++,對它比較熟悉,並且在大四畢業設計的時候,也用的是純c++開發的,雖然大學也有學其他的前端和後端**設計這些,但綜合考慮之後還是選擇走c++軟體工程師這條路線。」

2、然後他問我:「大四的時候是否有做過職業規劃?」

我回答說「有,因為c++門檻高,在我選擇走這條路之前,我希望5年之後自己能入門,使自己通過不斷學習技術得到質的飛躍,同時薪酬也能跟著有乙個質的飛躍。」

他接著追問:「你希望5年之後你的年薪是多少?」

我回答說「25~30w。」

3、後面他就具體跟我談公司的薪酬和各種福利制度。他先說了福利待遇:每個月會有400元餐補,400元交通補,還有住房補貼這一類的,每個季度還有450元的季度補貼,總的來說就是乙個月大概會有1000多元的補貼。

4、再然後就談到薪酬,他問我「你簡歷上寫的期望薪酬是8~10k乙個月,有沒有具體數值呢?」

我回答說:「如果要乙個具體數值的話,是10k也就是稅前1萬元。」(ps:你或許疑惑怎麼不談稅後?我想說的是沒必要問稅後,這年代沒人會跟你聊稅後到手的工資,一聊稅後工資就很低了。)

後面他就說了薪酬情況「新員工入職後有3個月的試用期,試用期間的工資是0.8*轉正後的工資,就是正式工資的8折,然後如果面試順利,我們互相都沒問題的話,8月份會給你交社保,一年的話工資在13~15w,並且我們公司是實行13薪的(一年領13個月的工資)。」

工資的話其實是有點高於當時我在招聘上看到的了,當時的是11~20w,當然這個跨度有點大,我是直接看最小的11w,這個才有用的,不要看上限。

5、最後他跟我聊 了一下工作時間,他可能是想給我surprise,他先問我猜測的工作時間是怎樣的?

我回答:「996?甚至是經常加班?」(996意思就是早上9:00到晚上9:00,一周上6天班)

他回答:「我們公司995,週末雙休,只有在遊戲要上線的時候才會加班。」

我說:「這個是超出我的預計了,我以為會經常加班。」(其實我是不信的,遊戲公司怎麼可能995,他說偶爾加班,我非常懷疑,應該是怕嚇走我。)

*ps:我這個面試估計是涼涼,因為筆試面和技術面都很糟糕,即使跟人力hr聊得很嗨,但也改變不了失敗的結局,今年畢業生真的不好找工作,唉,祝我好運吧!接著面試,希望能不斷進步,也祝各位早日拿到offer,共勉。 *

寫於2023年7月14日晚-15日凌晨 廣州大學城北亭村

2023年軟體工程作業05

軟體工程 作業要求 homework 10619 作業目標 需要在網頁頁面上呈現樹形結構形式的師門樹 作業內容 詳細見下文 參考文獻 結對資訊 陳宣任尹箏弈 github倉庫 具體分工 陳宣任 主要 編寫,測試 尹箏弈 ui設計,編寫 psp psp2.1 personal software pro...

2023年7月6日打卡

乙個機械人位於乙個 m x n 網格的左上角 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角。現在考慮網格中有障礙物。那麼從左上角到右下角將會有多少條不同的路徑?網格中的障礙物和空位置分別用 1 和 0 來表示。說明 m 和 n 的值均不超過 100。原題是有圖的,但是我懶得粘過來,...

2023年7月10日筆記

問題1 from operator import itemgetter 用法 a itemgetter 1 取a的第1個元素 問題2 pycharm debug的用法。問題3 axis 0 和axis 1的區別 1表示橫軸,方向從左到右 0表示縱軸,方向從上到下。問題1 from operator ...