① 一道程序員面試題,設計,很難
狀態0:初始狀態
狀態1:我是端點A
狀態2:我可能是端點B
狀態3:我是端點B
狀態4:我是路人
消息0:初始化消息
消息1:這是來自端點A的消息,我正在尋找端點B
消息2:你的另一邊還有我,你不是端點B
消息3:那麼誰是端點B呢
消息4:這是來自端點B的消息
消息5:這是來自端點A的消息
消息6,路人請在下一次接到消息5時開燈,端點A請開燈
回饋,將消息發給觸發當前消息的一端(誰給我的我就給誰)
轉發:將消息發給觸發當前消息的另一端(誰給我的我就不給誰)
廣播:將消息發給兩邊(給兩邊都發送)
收到初始化消息的人將自己置為狀態1,並轉發消息1,
收到消息1的人將自己置為狀態2,並轉發消息1,回饋消息2,
收到消息2的人將分為兩種:
狀態1,不改變狀態,並回饋消息3
狀態2,將自己置為狀態4,不發送消息
收到消息3的人將分為兩種:
狀態4,不改變狀態,轉發消息3
狀態2,將自己置為狀態3,回饋消息4
/*
至此為止,三種角色已經明確,兩個端點分別是狀態1和狀態3,狀態4是路人
*/
可能收到消息4的人分為三種:
端點A,回饋消息5
路人,轉發消息4
端點B,回饋消息4
收到消息5的人分為兩種:
路人,轉發消息5
端點B,
/*
當端點B收到消息5的時候,端點B還正在無限發送消息4,端點A正在無限發送消息5,路人正在無限轉發消息5和4
*/
此時所有路人都可能收到兩種消息,4和5,端點A只會收到4端點B只會收到5
端點A收到消息5則回饋消息4
端點B收到消息4則回饋消息5
路人只負責轉發
我已經盡力了,只能做到這個程序,這個是結合網路路由協議設計出來的一種通信機制,但是也只能做到目前的程度,經過我一周零散時間的考慮,想要實現同時開燈,必須在狀態里邊提供計數器,能給個整數就行,這樣就可以通過對信號進行計數來約定時間,否則我真的想不到辦法了,以上答案僅僅是一個思路,而且我認為這個題缺乏必要條件,希望對你有幫助。
② 面試沒過的那些程序員,都去哪裡了
面試沒過的那些程序員,都去哪裡了?面試沒過的程序員大概都去轉行了吧。做自己善長的事情固然很好,畢竟自己適應了這么多年,屬於自己的舒適區。作為一名程序員,自然善長敲代碼,做一名老師或許是不錯的選擇。當然如果不想繼續呆在舒適區,想換一個行業,想挑戰一下自己,做銷售或者自己自主創業都是不錯的選擇;為自己的未來做一個長遠的規劃,好好想想自己的職業理想是什麼,然後一步一個腳印朝著自己的職業理想邁進。程序員到三十多歲就會有一種危機感,消除危機感最好的方法就是學習,提升自己。
③ 面試java程序員不下7次了,都沒面試上,什麼原因
面試java程序員失敗可能的原因如下:
java的基礎知識掌握不夠,很多大公司比較注重的是java的基礎,比如一些集合類、多線程等,反而對於一些流行的框架之類的在乎,因為如果基礎不夠,學習任何框架都會非常困難。
只掌握java這一種編程語言,對於主流的語言沒有更多的認識。其實java裡麵包含了很多其他的語言,比如html、jquery、html5等等,需要具備豐富的開發經驗。
缺乏實際的項目經驗,僅僅做一些上級實驗,是遠沒有達到公司層面的要求的。