如何看待網易的簡單C++面試題被批評?

如何評價網易校招C++的筆試題?

請問這一題的難度級別究竟是有多高,導致大家都在批評網易?Java程序員居多。

網易是否需要不會這題的人來寫代碼呢?

有人說b和d是錯的,大言不慚的說編譯不通過,呵呵,這全是類型,哪來的聲明?


華大基因面試題:

黃金大米轉了幾個基因?

公務員面試題:

請默寫《共產黨宣言》從第五個自然段到第七個自然段,標點符號計入成績。

南大歷史系博士面試題:

請默寫王振和劉瑾的父親、祖父、二世祖、三世祖的名諱。

你覺得合理嗎?

------------------------------------------------------------------------------

更新幾個:

清華數院解析數論博士面試題:

請背誦歐拉數 e 的十進位展開,小數點後 500 位。

北大中文系比較文學博士面試題:

茴香豆的茴字有幾種寫法?

網易 C++ 面試題:

int (*((*ptr(int, int)))) (int);
請描述 ptr 的類型


這題的bd項都是錯的,連出題出錯的都能呆在網易,我們為什麼不能去

媽的大意了,e是對的

如果說會不會讀懂複雜聲明成了您心目中CC++程序員與java程序員的區分標誌,那我覺得您還是去寫java吧,別來誤解CC++

另外這題怎麼簡單了,如果說字數少就是簡單,那我問一個:C++有幾種new?

C++有幾種new?

你給我編譯通過一個試試看


如果不是筆試而是允許用編譯器,這個 e 還是很有意思的,至少它能分辨出知道「函數類型」和「函數指針」的區別的人的... 好吧,我就滑稽一把,你們接著噴。其實是我試著用新寫法去 match 它然後弄了半天才 pass :(

我一上來的猜測是

int (*((*ptr(int, int))))(int);

中 ptr 的類型是

using ptr_t = auto (*)(int, int) -&> int (*)(int);

然而不是

x.cc:9:1: error: static assertion failed
static_assert(std::is_same&::value, "");
^~~~~~~~~~~~~

這讓我情何以堪... 把兩個類型都列印出來

x.cc:7:1: error: decltype evaluates to "int (**(int, int))(int)", which is not a class or enumeration type
decltype(ptr)::print();
^~~~~~~~
x.cc:8:1: error: decltype evaluates to "ptr_t {aka int (* (*)(int, int))(int)}", which is not a class or enumeration type
decltype(ptr_t())::print();
^~~~~~~~

這鬼畜的括弧結合性... 所以 ptr 到底是啥

x.cc:7:17: error: function "int (** x(int, int))(int)" is initialized like a variable
decltype(ptr) x{};

好吧,居然是個函數類型,雖然名字叫 ptr ——嗯,就是給貓取名「狗」的那種人呢,666 啊。

那麼下一個猜測就是

using ptr_t = auto (int, int) -&> int (**)(int);
static_assert(std::is_same&::value, "");

這次終於對了...

所以... 即使你不 typedef 中間類型,也請說人話—— using + trailing return type.

// 這是一個「如何通過構造編譯錯誤從錯誤信息中讀類型」的教學貼


希望題主解開匿名,我好拉黑。最好公布實名信息,我好讓我司hr加入黑名單。

話說為啥會有人覺得我是養豬廠的?我司只是個小廠,但cpp面試我經常參加,我可不想給我司招這種坑貨


&> 有人說b和d是錯的,大言不慚的說編譯不通過,呵呵,這全是類型,哪來的聲明?

你這是哪國的C++,類型里還能寫個"ptr"進去?這叫identifier,整個下來就是一個變數聲明。

類型應該這麼寫:

int (*)[10]

int (*)(int)

int (**(int, int))(int)


除了對錯之外,這是不提倡的編碼風格。優秀的做法應該是使用 typedef 或者using拆開。

如果網易內部的代碼庫允許使用這種風格,那麼網易就是技術不過關,如果不是,那麼他就是故意在面試設檻來噁心別人。無論哪種情況,網易的做法都很垃圾。


這是牛客網題庫里的一道題,說實話校招同一個崗位很多公司的筆試題都一樣,應該是不想自己出為了偷懶從題庫里找的。


這是什麼崗的題?我做研發崗怎麼沒發現有這個?


Swift連++都不讓用了。
還有人拿邊角料當技術考點。
你咋不問回字有幾種寫法呢?


我要看到誰敢提交這種代碼第二天肯定開除


又黑我C艹。
《C++從入門到勸退》


這到底是面試題還是筆試題,還是從別處拿來黑網易的?有可靠來源嗎?

代碼本身,即使是最複雜的最後一問也沒超過C標準庫的signal函數的聲明。但是五個問有兩個是語法錯誤,還有一個有毫無意義的 (( ,命名看起來是隨便寫的,讓人有種出題者不會C聲明的感覺

而且個人有似乎很久以前在百度知道 / 百度貼吧見過這個問題的既視感


這個題,看過thinking in c++,就會。很基礎。


首先,這幾個都是名稱聲明,不是單純的類型表示。
其次,B和D的語法結構是錯的,而C編譯器的類型識別是基於語法結構而不是詞法結構,一個連語法結構都match 不了的聲明是無法提取和定義類型的

我以前做過C99的編譯器前段。這裡留個空,之後有時間我會在這個答案下系統闡述一下C語言的類型提取的語法制導規則。

另外,E那個選項挺有意思,有機會之後展開再說吧= =


#include&
int main()
{
int a1,a2,a3,a4,a5;
a1=123;
a2= 456;
a3=789;
a4= --a1+++a2--+++a3--;
a5= ++a3---a1+++a2--a4;
printf("%d
",a5);
return 0;
}
/*請問輸出結果是什麼
向工作在教育一線的譚浩強和嚴蔚敏老師致以崇高的敬意!
感謝兩位老師成功提高了編程的門檻。
一直很好奇,譚浩強老師是搞學術還是搞政治?又是leader題詞又是大紅的書皮,這到底是技術類書籍還是。。。
*/


abcd還好,e好像是c陷阱和缺陷里的例子,要不就是c專家編程里的... 關於c的經典書就那麼幾本...看過的應該能猜出來的...


就是因為有這樣惡劣的題目C++才被誤解.jpg


這明顯是C風格的面試題。

最後e項的函數指針,如果是C語言的話會很常見的。比如

linux 的 &里的這個

void (*signal (int sig_num, void (*handler)(int))) (int)

可能有的招聘方根本分不清c和c++是2種不同語言。

比如經常有人這樣招聘: ……;精通C/C++;……

你到底是想招「精通C的」,還是「精通C++的」,還是「精通C或C++的」,還是「精通C與C++的」,還是「精通C除以C++的」? 到底要幹什麼心裡能有點B-樹嗎?


並不簡單而是過於難了,出題人是知道回字有四種寫法的孔乙己


自從有了 auto ,各種複雜的聲明一般就很少出現了
哦,對了,java沒有auto,所以這題更適合考java (逃


推薦閱讀:

很多IT大牛在我這個年齡時已經很厲害了,我該怎麼做才能變成他們那樣的人?
如何看待qq空間表白牆的爆火?
真正的 IT 男是什麼樣的?
怎麼判斷自己是否適合做程序員?
目前IT很火,很多人轉行,簡單培訓後進入IT行業,那麼這樣「速成」的IT從業人員發展前景如何?

TAG:網易 | 難題 | C | IT行業 | 面試問題 |