⑴ 75道程序員面試邏輯測試題(附答案)(1)
【1】 假設有一個池塘,裡面有無窮多的水。現有2個空水壺,容積分別為5升和6升。問題是如何只用這2個水壺從池塘里取得3升的水。
由滿6向空5倒,剩1升,把這1升倒5里,然後6剩滿,倒5裡面,由於5裡面有1升水,因此6隻能向5倒4升水,然後將6剩餘的2升,倒入空的5裡面,再灌滿6向5里倒3升,剩餘3升。
【2】 周雯的媽媽是豫林水泥廠的化驗員。一天,周雯來到化驗室做作業。做完後想出去玩。"等等,媽媽還要考你一個題目,"她接著說,"你看這6隻做化驗用的玻璃杯,前面3隻盛滿了水,後面3隻是空的。你能只移動1隻玻璃杯,就便盛滿水的杯子和空杯子間隔起來嗎?"愛動腦筋的周雯,是學校里有名的"小機靈",她只想了一會兒就做到了。請你想想看,"小機靈"是怎樣做的?
設杯子編號為ABCDEF,ABC為滿,DEF為空,把B中的水倒進E中即可。
【3】 三個小夥子同時愛上了一個姑娘,為了決定他們誰能娶這個姑娘,他們決定用手槍進行一次決斗。小李的命中率是30%,小黃比他好些,命中率是50%,最出色的槍手是小林,他從不失誤,命中率是100%。由於這個顯而易見的事實,為公平起見,他們決定按這樣的順序:小李先開槍,小黃第二,小林最後。然後這樣循環,直到他們只剩下一個人。
那麼這三個人中誰活下來的機會最大呢?他們都應該採取什麼樣的策略?
小林在輪到自己且小黃沒死的條件下必殺黃,再跟菜鳥李單挑。
所以黃在林沒死的情況下必打林,否則自己必死。
小李經過計算比較(過程略),會決定自己先打小林。
於是經計算,小李有873/2600≈33.6%的生機;
小黃有109/260≈41.9%的生機;
小林有24.5%的生機。
哦,這樣,那小李的第一槍會朝天開,以後當然是打敵人,誰活著打誰;
小黃一如既往先打林,小林還是先幹掉黃,冤家路窄啊!
最後李,黃,林存活率約38:27:35;
菜鳥活下來抱得美人歸的幾率大。
李先放一空槍(如果合夥干中林,自己最吃虧)黃會選林打一槍(如不打林,自己肯定先玩完了)林會選黃打一槍(畢竟它命中率高)李黃對決0.3:0.280.4可能性李林對決0.3:0.60.6可能性成功率0.73
李和黃打林李黃對決0.3:0.40.7 0.4可能性李林對決0.3:0.7 0.6 0.70.7 0.6可能性成功率0.64
【4】 一間囚房裡關押著兩個犯人。每天監獄都會為這間囚房提供一罐湯,讓這兩個犯人自己來分。起初,這兩個人經常會發生爭執,因為他們總是有人認為對方的湯比自己的多。後來他們找到了一個兩全其美的辦法:一個人分湯,讓另一個人先選。於是爭端就這么解決了。可是,現在這間囚房裡又加進來一個新犯人,現在是三個人來分湯。必須尋找一個新的方法來維持他們之間的和平。該怎麼辦呢?按:心理問題,不是邏輯問題
是讓甲分湯,分好後由乙和丙按任意順序給自己挑湯,剩餘一碗留給甲。這樣乙和丙兩人的總和肯定是他們兩人可拿到的最大。然後將他們兩人的湯混合之後再按兩人的方法再次分湯。
【5】 在一張長方形的桌面上放了n個一樣大小的圓形硬幣。這些硬幣中可能有一些不完全在桌面內,也可能有一些彼此重疊;當再多放一個硬幣而它的圓心在桌面內時,新放的硬幣便必定與原先某些硬幣重疊。請證明整個桌面可以用4n個硬幣完全覆蓋。
要想讓新放的硬幣不與原先的硬幣重疊,兩個硬幣的圓心距必須大於直徑。也就是說,對於桌面上任意一點,到最近的圓心的距離都小於2,所以,整個桌面可以用n個半徑為2的硬幣覆蓋。
把桌面和硬幣的尺度都縮小一倍,那麼,長、寬各是原桌面一半的小桌面,就可以用n個半徑為1的硬幣覆蓋。那麼,把原來的桌子分割成相等的4塊小桌子,那麼每塊小桌子都可以用n個半徑為1的硬幣覆蓋,因此,整個桌面就可以用4n個半徑為1的硬幣覆蓋。
【6】 一個球、一把長度大約是球的直徑2/3長度的直尺.你怎樣測出球的半徑?方法很多,看看誰的比較巧妙
把球放在平面上,把直尺的一邊卡在平面上,一邊卡在球上,球與尺子的接觸點到平面的距離就是球的半徑.因為直尺長度約為直徑的2/3>半徑,所以能測量.
【7】 五個大小相同的一元人民幣硬幣。要求兩兩相接觸,應該怎麼擺?
底下放一個1,然後2 3放在1上面,另外的4 5豎起來放在1的上面。
【8】 猜牌問題S先生、P先生、Q先生他們知道桌子的抽屜里有16張撲克牌:紅桃A、Q、4黑桃J、8、4、2、7、3草花K、Q、5、4、6方塊A、5。約翰教授從這16張牌中挑出一張牌來,並把這張牌的點數告訴P先生,把這張牌的花色告訴Q先生。這時,約翰教授問P先生和Q先生:你們能從已知的點數或花色中推知這張牌是什麼牌嗎?於是,S先生聽到如下的對話:P先生:我不知道這張牌。Q先生:我知道你不知道這張牌。P先生:現在我知道這張牌了。Q先生:我也知道了。聽罷以上的對話,S先生想了一想之後,就正確地推出這張牌是什麼牌。請問:這張牌是什麼牌? 方塊5
【9】 一個教授邏輯學的教授,有三個學生,而且三個學生均非常聰明!一天教授給他們出了一個題,教授在每個人腦門上貼了一張紙條並告訴他們,每個人的紙條上都寫了一個正整數,且某兩個數的和等於第三個!(每個人可以看見另兩個數,但看不見自己的)教授問第一個學生:你能猜出自己的數嗎?回答:不能,問第二個,不能,第三個,不能,再問第一個,不能,第二個,不能,第三個:我猜出來了,是144!教授很滿意的笑了。請問您能猜出另外兩個人的數嗎?
經過第一輪,說明任何兩個數都是不同的。第二輪,前兩個人沒有猜出,說明任何一個數都不是其它數的兩倍。現在有了以下幾個條件:1.每個數大於02.兩兩不等3.任意一個數不是其他數的兩倍。每個數字可能是另兩個之和或之差,第三個人能猜出144,必然根據前面三個條件排除了其中的一種可能。假設:是兩個數之差,即x-y=144。這時1(x,y>0)和2(x!=y)都滿足,所以要否定x+y必然要使3不滿足,即x+y=2y,解得x=y,不成立(不然第一輪就可猜出),所以不是兩數之差。因此是兩數之和,即x+y=144。同理,這時1,2都滿足,必然要使3不滿足,即x-y=2y,兩方程聯立,可得x=108,y=36。
這兩輪猜的順序其實分別為這樣:第一輪(一號,二號),第二輪(三號,一號,二號)。這樣分大家在每輪結束時獲得的信息是相同的(即前面的三個條件)。
那麼就假設我們是C,來看看C是怎麼做出來的:C看到的是A的36和B的108,因為條件,兩個數的和是第三個,那麼自己要麼是72要麼是144(猜到這個是因為72的話,108就是36和72的和,144的話就是108和36的和。這樣子這句話看不懂的舉手):
假設自己(C)是72的話,那麼B在第二回合的時候就可以看出來,下面是如果C是72,B的思路:這種情況下,B看到的就是A的36和C的72,那麼他就可以猜自己,是36或者是108(猜到這個是因為36的話,36加36等於72,108的話就是36和108的和):
如果假設自己(B)頭上是36,那麼,C在第一回合的時候就可以看出來,下面是如果B是36,C的思路:這種情況下,C看到的就是A的36和B的36,那麼他就可以猜自己,是72或者是0(這個不再解釋了):
如果假設自己(C)頭上是0,那麼,A在第一回合的時候就可以看出來,下面是如果C是0,A的思路:這種情況下,A看到的就是B的36和C的0,那麼他就可以猜自己,是36或者是36(這個不再解釋了),那他可以一口報出自己頭上的36。(然後是逆推逆推逆推),現在A在第一回合沒報出自己的36,C(在B的想像中)就可以知道自己頭上不是0,如果其他和B的想法一樣(指B頭上是36),那麼C在第一回合就可以報出自己的72。現在C在第一回合沒報出自己的36,B(在C的想像中)就可以知道自己頭上不是36,如果其他和C的想法一樣(指C頭上是72),那麼B在第二回合就可以報出自己的108。現在B在第二回合沒報出自己的108,C就可以知道自己頭上不是72,那麼C頭上的唯一可能就是144了。
史上最雷人的應聘者
【10】 某城市發生了一起汽車撞人逃跑事件,該城市只有兩種顏色的車,藍15%綠85%,事發時有一個人在現場看見了,他指證是藍車,但是根據專家在現場分析,當時那種條件能看正確的可能性是80%那麼,肇事的車是藍車的概率到底是多少?
15% 80%/(85%×20%+15% 80%)
【11】 有一人有240公斤水,他想運往乾旱地區賺錢。他每次最多攜帶60公斤,並且每前進一公里須耗水1公斤(均勻耗水)。假設水的價格在出發地為0,以後,與運輸路程成正比,(即在10公里處為10元/公斤,在20公里處為20元/公斤......),又假設他必須安全返回,請問,他最多可賺多少錢?
f(x)=(60-2x)*x,當x=15時,有最大值450。
450×4
【12】 現在共有100匹馬跟100塊石頭,馬分3種,大型馬;中型馬跟小型馬。其中一匹大馬一次可以馱3塊石頭,中型馬可以馱2塊,而小型馬2頭可以馱一塊石頭。問需要多少匹大馬,中型馬跟小型馬?(問題的關鍵是剛好必須是用完100匹馬) 6種結果
【13】 1=5,2=15,3=215,4=2145那麼5=?
因為1=5,所以5=1.
【14】 有2n個人排隊進電影院,票價是50美分。在這2n個人當中,其中n個人只有50美分,另外n個人有1美元(紙票子)。愚蠢的電影院開始賣票時1分錢也沒有。問:有多少種排隊方法使得每當一個擁有1美元買票時,電影院都有50美分找錢
註:1美元=100美分擁有1美元的人,擁有的是紙幣,沒法破成2個50美分
本題可用遞歸演算法,但時間復雜度為2的n次方,也可以用動態規劃法,時間復雜度為n的平方,實現起來相對要簡單得多,但最方便的就是直接運用公式:排隊的種數=(2n)!/[n!(n+1)!]。
如果不考慮電影院能否找錢,那麼一共有(2n)!/[n!n!]種排隊方法(即從2n個人中取出n個人的組合數),對於每一種排隊方法,如果他會導致電影院無法找錢,則稱為不合格的,這種的排隊方法有(2n)!/ (n-1)!(n+1)! 種,所以合格的排隊種數就是(2n)!/[n!n!]- (2n)!/[(n-1)!(n+1)!] =(2n)!/[n!(n+1)!]。至於為什麼不合格數是(2n)!/[(n-1)!(n+1)!],說起來太復雜,這里就不講了。
【15】 一個人花8塊錢買了一隻雞,9塊錢賣掉了,然後他覺得不劃算,花10塊錢又買回來了,11塊賣給另外一個人。問他賺了多少?
2元
【16】 有一種體育競賽共含M個項目,有運動員A,B,C參加,在每一項目中,第一,第二,第三名分別的X,Y,Z分,其中X,Y,Z為正整數且X>Y>Z。最後A得22分,B與C均得9分,B在百米賽中取得第一。求M的值,並問在跳高中誰得第二名。
因為ABC三人得分共40分,三名得分都為正整數且不等,所以前三名得分最少為6分,40=5 8=4 10=2 20=1 20,不難得出項目數只能是5.即M=5.
A得分為22分,共5項,所以每項第一名得分只能是5,故A應得4個一名一個二名.22=5*4+2,第二名得1分,又B百米得第一,所以A只能得這個第二.
B的5項共9分,其中百米第一5分,其它4項全是1分,9=5+1=1+1+1.即B除百米第一外全是第三,跳高第二必定是C所得.
【17】 前提:
1 有五棟五種顏色的房子
2 每一位房子的主人國籍都不同
3 這五個人每人只喝一種飲料,只抽一種牌子的香煙,只養一種寵物
4 沒有人有相同的寵物,抽相同牌子的香煙,喝相同的飲料
提示:1 英國人住在紅房子里
2 瑞典人養了一條狗
3 丹麥人喝茶
4 綠房子在白房子左邊
5 綠房子主人喝咖啡
6 抽PALLMALL煙的人養了一隻鳥
7 黃房子主人抽DUNHILL煙
8 住在中間那間房子的人喝牛奶
9 挪威人住第一間房子
10抽混合煙的人住在養貓人的旁邊
11養馬人住在抽DUNHILL煙的人旁邊
12抽BLUEMASTER煙的人喝啤酒
13德國人抽PRINCE煙
14挪威人住在藍房子旁邊
15抽混合煙的人的鄰居喝礦泉水
問題是:誰養魚???
第一間是黃房子,挪威人住,喝礦泉水,抽DUNHILL香煙,養貓;! f/ [% a: 6 L! J. Q9 x第二間是藍房子,丹麥人住,喝茶,抽混合煙,養馬;+ o8 _0 S) L8 i' E' u第三間是紅房子,英國人住,喝牛奶,抽PALL MALL煙,養鳥;/ N9 o/ n2 M# U" c第四間是綠房子,德國人住,喝咖啡,抽PRINCE煙,養貓、馬、鳥、狗以外的寵物;7 P5 l) G, G, |; C, {7 V第五間是白房子,瑞典人住,喝啤酒,抽BLUE MASTER煙,養狗。
【18】 5個人來自不同地方,住不同房子,養不同動物,吸不同牌子香煙,喝不同飲料,喜歡不同食物。根據以下線索確定誰是養貓的人。
10.養魚的人住在最右邊的房子里。
11.吸萬寶路香煙的人住在吸希爾頓香煙的人和吸「555」香煙的人的中間(緊鄰)
12.紅房子的人愛喝茶。
13.愛喝葡萄酒的人住在愛吃豆腐的人的右邊隔壁。
14.吸紅塔山香煙的人既不住在吸健牌香煙的人的隔壁,也不與來自上海的人相鄰。
15.來自上海的人住在左數第二間房子里。
16.愛喝礦泉水的人住在最中間的房子里。
17.愛吃面條的人也愛喝葡萄酒。
18.吸「555」香煙的人比吸希爾頓香煙的人住的靠右
第一間是蘭房子,住北京人,養馬,抽健牌香煙,喝茅台,吃豆腐;2 G7 x% z0 v; C第二間是綠房子,住上海人,養狗,抽希爾頓,喝葡萄酒,吃面條;% C2 k4 o8 t" p6 L* x第三間是黃房子,住香港人,養蛇,抽萬寶路,喝礦泉水,吃牛肉;& N" S% x# o3 a; g第四間是紅房子,住天津人,抽555,喝茶,吃比薩;7 5 s. J# d, Q/ N% N' O# ]第五間是白房子,住成都人,養魚,抽紅塔山,喝啤酒,吃雞。
【19】 鬥地主附殘局
地主手中牌2、K、Q、J、10、9、8、8、6、6、5、5、3、3、3、3、7、7、7、7
長工甲手中牌大王、小王、2、A、K、Q、J、10、Q、J、10、9、8、5、5、4、4
長工乙手中牌2、2、A、A、A、K、K、Q、J、10、9、9、8、6、6、4、4
三家都是明手,互知底牌。要求是:在三家都不打錯牌的情況下,地主必須要麼輸要麼贏。問:哪方會贏?
無解地主怎麼出都會輸
【20】 一樓到十樓的每層電梯門口都放著一顆鑽石,鑽石大小不一。你乘坐電梯從一樓到十樓,每層樓電梯門都會打開一次,只能拿一次鑽石,問怎樣才能拿到最大的一顆?
先拿下第一樓的鑽石,然後在每一樓把手中的鑽石與那一樓的鑽石相比較,如果那一樓的鑽石比手中的鑽石大的話那就把手中的鑽石換成那一層的鑽石。
⑵ 如何看待程序員面試讓上機做編程題,這樣的公司多嗎
從事軟體開發多年,上機寫代碼這種考查模式在國外用的比較多,很多國內的公司也在學習這種方式,這種方式能直接看出寫代碼的能力,但對上機做編程題目這種事情很多成熟的程序員覺得是一種侮辱,有一些程序員看到有筆試直接就選擇走人了,這些東西在面試之前應該有溝通,事情不會變得這么被動,因為對於很多有能力的程序員,能夠請到面試已經非常不容易了,能力越強脾氣越大。
直接上機做編程測試能力的公司不是很多,從事軟體開發十幾年主要經歷了四家公司,面試的時候主要靠面談為主,因為編程行業能力的高低通過交談就能了解差不多,只需要根據簡歷上寫的項目進行細節溝通,如果真的做過幾句話就能看出大概的水平,所以很多公司壓根不搞什麼筆試或者上機寫代碼的事情,編程這個職業主要靠時間的積累,並且在積累中不斷完善自己的知識體系,慢慢提高自己的認知。
一個程序員如何提升自己的能力水平,對於初學者來講首先是學習好一門編程語言,開始學習階段覺得編程語言就是天了,好像是學會了編程語言就能做任何的東西了,隨著編程語法的學習完畢就開始嘗試做一些題目,結果發現距離語法真的非常遙遠,所以有很多的初學者有一種感概明明在課堂什麼都明白了,結果到真正自己實踐的時候什麼都想不起來,這是初學者必然的經歷,編程本身就是一種不斷磨練編程思想的過程,編程語言屬於在輔助類基礎技能,沒有輔助就不會寫代碼,編程設計思想再牛也不可能實現,兩者是相輔相成的作用,編程思想裡麵包含著仙姑經驗的積累。
很多人覺得很奇怪有些公司也不進行面試也不讓上機寫代碼,就是通過不到一個小時的閑聊就能把一個人的水平能力和工資水平給定位下來,通過面試就能檢測出編程思想以及編程基礎,編程基礎類的考察只需要問幾個簡單的語法問題就能做個大概的檢測,編程思想就是完全的編程意識以及編程經驗的積累,所以一些企業在招聘的時候明確寫著就相關開發經驗的人優先,企業招聘的目的就是希望要的人在短時間內能夠上崗直接切入到項目開發中去,整體來看是不是需要上機寫代碼測試完全看每個公司的技術文化了。
有些技術類的公司對於程序員的基本功要求特別嚴格,有個同事在第一家技術公司的時候,部門技術經理特別關注程序員的基本語法,只要是簡單的代碼語法錯誤,就能到部門的黑板通報,開始實施階段很多人上了黑板,後來隨著時間的推移上去的人越來越少了,同事說到自己上了兩次黑板都是因為在使用指針的時候沒有初始化導致,到今天還是記憶尤新,如果在技術生涯的初期能夠經歷過這種企業是一個技術人的幸運了,越是嚴格要求的領導或者公司越是有利於技術人員 的成長,至於在面試的時候要不要上機這個就看每個公司的技術文化了,一般注重代碼基礎的領導會引領這個事情,希望能幫到你。
這是一個正常的流程,我覺得有時候還是有必要的考驗一下面試者的。
以前這種面試實際上是很平常的,但是發展到現在越來越多的人對這樣的面試很反感,大概率的原因是因為很多人更多的是在搬代碼,並且搬的很成功,而真正注意寫代碼的人反而越來越少。
筆試和上機編程好不好?
我覺得挺好的,這樣可以刷下去很多劃水的人,有的人,寫代碼的能力並不強,但是搬代碼的技術一流,隨著技術越來越晚上,一些解決各種bug的網站越來越流行,現在更多的畢業生為了高工資,變成了搬代碼的人,他們能解決問題嗎?能,但是是他們自己的解決的嗎?不是,更多的是他們通過搜索的手段,問度娘,問谷歌,漸漸的形成了一個可以解決問題的方案,雖然問題解決了,但是等遇到一個需要創新開發的時候,他們就完了,基本上沒有了自我的思維。
筆試和上機可以有效的防止這類人進入公司,實際上也是一種不錯的手段。
這樣的公司多不多?
據我所致,目前來講上機編程的公司不是很多,畢竟,每個公司所使用的編程軟體不同,有的公司製作的軟體也比較具有保密性,沒辦法直接考程序員的實際能力,只能通過一些演算法測試,或者是什麼測試,來簡單的排除掉那些搬運的人。
所以上機測試的效果並不是特別好,一般的公司都會選擇用筆試的方式。
我遇到過不少筆試的,上機的從來沒有遇到過。
我一個同事之前換工作的時候倒是遇到過,按他所說,這樣的測試並沒有什麼效果,畢竟測試題出得很淺,太難的問題,基本上短時間內很難解決,也不會有那麼長的面試時間。
其實,在我看來,這個上機面試並沒有那麼大的用途,畢竟測試不到太多的東西,還不如看他自己寫過的代碼來的更快。至於這樣的公司多不多,真沒辦法說,畢竟沒有統計過,根據我的經驗,我覺得不會太多。
筆試的我見過,但是上機的沒有過。
1.筆試可以有
這么說嘛,其實簡單的筆試的話肯定是可以的。因為筆試的話可以讓招聘者知道你大概的能力定位在什麼位置?一些邏輯編程可以測試你的邏輯能力。尤其是在it這個行業,邏輯能力是非常重要的。
如果說你是一個已經有工作經驗的人。其實筆試就沒有那麼重要了。這時候看中的一般差不多就是你曾經的項目經歷。
如果說讓你做一些項目上的,比如說項目架構了這種的,你可以拒絕回答。因為我之前就有聽到過說招聘產品經理,讓他去設計一個產品的。結果這個公司就是通過一直招聘產品經理。然後讓產品經理去設計產品相關的功能,最後再把這些所有求職者的產品相關的思維組合到一起。
雖然說這總公司是很少的,但是也不排除是有隻通過這種方式來滿足產品需要的。
所以解釋的時候可以大概的寫一個思路代碼的流程,但是可以不用全部都寫。
2.上機測試
我覺得這個確切的來說是有一點過分的。像這種上機考試的話,肯定他是需要一個比較完整的項目。但是這種項目誰都不知道是他們公司需要,還是讓他僅僅是為了做測試。所以像這種事情完全可以直接拒絕。
在這里大概說明一下。 找工作是一個雙向的過程 ,如果說是你無法接受這個公司相關的制度,或者說是相關的流程。其實你可以趁早放棄這種公司的,不然的話即使是你筆試面試都過啦,你到公司之後也會因為你自己的價值觀跟企業的文化匹配不到一起。遲早還是要辭職的,所以你要慎重考慮。
其實面試的時候筆試和機試都是it的正常流程,但是在國內被玩爛了,面試和機試過程中,會有公司內遇到的問題做為面試內容的,也許是個人也許是公司,讓你解決這樣那樣的問題,這樣子的都是垃圾
作為一個老程序員,關於程序員面試的話題,非常有意思,特別有的聊。其實在 IT 界面,有兩個不算公開的秘密,也就是兩個不成文的習慣或者規定吧,關於面試的。
讓老程序員做筆試題是一種侮辱
很多程序員,尤其是有經驗的程序員,去面試的時候,尤其是去小公司面試的時候,如果對方給你出了一套筆試題,很多程序員會說: 我轉頭就走,這是對我經驗水平的侮辱 。
你們是不是感覺很吃驚,還有這種道理?確實是,我有一次去一個創業公司面試,對方給我出了一套筆試題,我做完了,面試完回去跟一些同事聊筆試題的事,他們會驚訝的說:你竟然把筆試題做了?你是有經驗的程序員,不應該經過筆試的,直接面試就行,筆試是一種侮辱。那是我才發現,好多程序員都這么認為的。
但是,我感覺這是一種病態思維,你既然去面試,其實筆試也是面試的一種,你去大公司比如 BAT 這樣的公司的時候,也會有筆試,而且層層面試好幾輪,你都能忍,一些小公司給你出筆試題,你竟然受不了?公司用什麼方式來面試你,是公司的選擇和考量,當然了,面試是一種雙向選擇,如果你感覺是侮辱,當然可以選擇不面了,這是雙方面試的權利。
但是,我感覺筆試是一種正常的流程,跟有沒有經驗沒有關系。有經驗了,你筆試你確定能過么?
很多程序員都不會選擇上機測試
還有一種就是面對上機做題的面試,很多程序員都不喜歡,其實我也不喜歡的,大部分程序員好像遇到上機面試的情況,也是選擇扭頭就走。
其實,我感覺上機測試是可以接受的,但是是有條件的,那就是上機做題,可以做演算法題,這種方式我能接受。
有一次我去面試,他讓我上機做題,竟然跟我說用 Android 寫個什麼功能,什麼模塊,簡直了,這種題怎麼做?直接去實現功能模塊,寫其中的一個點,我都不熟悉需求,也不熟悉功能模塊,上來就寫,怎麼做?沒法弄。我直接就走了。
演算法題屬於比較明確的東西,上機做兩道應該是可以接受的。
你問上機做題的這樣面試的公司多嗎?可以明確地告訴你,不多,我工作這么多年,面試了很多公司,只遇到過兩家。
我是負責我們公司技術面試的,機試環節必不可少。題目不會很難主要是考核程序員的感覺,只有有感覺的程序員才能寫好大程序,這很關鍵。
這主要看做什麼了,我最頭疼的是拿一個構架來靠你函數命令。我都是自己寫數學模型和函數。我哪知道這個構架的函數名?
務實啊,說明人要的是能實乾的程序猿,沒什麼奇怪。面試需求很明確,要會乾的。找領導才找會說的。剛畢業面試的時候遇見過這種機試,程序猿這行算是工科,靠技術吃飯,面試動手實戰是正常的。
支持,不然很多水逼,劃水貨太多了
這樣的公司會存在
基於以下4個原因:
1 面試的人很多,不想花過多的時間去篩選。這樣做題,可以快速過濾一些濫竽充數的人
2 通過合理的上機操作,有針對性地找合適的人,匹配的人也能快速完成上機操作
3 標准,對面試者統一對待,以免主觀原因造成誤判
4 面試者的配合度,一般看到機試,有人就會直接退出。(我遇到這種情況,就會直接走)
以上4個原因,都是較為正式的原因,還有一個主要原因就是能力不行,面試官無法正確篩選簡歷,面試官無法從面試中獲取想要的信息並加以判斷。
基於最後一個原因就是我會選擇直接走的原因,面試官能力不行,表示公司對此招聘的用功不足,該公司沒有能力或沒有意願重視此次招聘。即使入職,收到的待遇不會重視,沒有必要把自己的前景壓在一個不會重視你成果的公司上。
⑶ C/C++經典面試題
C/C++經典面試題
面試題 1:變數的聲明和定義有什麼區別
為變數分配地址和存儲空間的稱為定義,不分配地址的稱為聲明。一個變數可以在多個地方聲明,
但是只在一個地方定義。加入 extern修飾的是變數的聲明,說明此變數將在文件以外或在文件後面部分
定義。
說明:很多時候一個變數,只是聲明不分配內存空間,直到具體使用時才初始化,分配內存空間,
如外部變數。
面試題 2:寫出 bool 、int、 float、指針變數與「零值」比較的 if 語句
bool型數據:
if( flag )
{
A;
}
else
{
B;
}
int型數據:
if( 0 != flag )
{
A;
}
else
{
B;
}
指針型數:
if( NULL == flag )
{
A;
}
else
{
B;
}
float型數據:
if ( ( flag >= NORM ) && ( flag <= NORM ) )
{
A;
2
}
注意:應特別注意在 int、指針型變數和「零值」比較的時候,把「零值」放在左邊,這樣當把「==」
誤寫成「=」時,編譯器可以報錯,否則這種邏輯錯誤不容易發現,並且可能導致很嚴重的後果。
面試題 3:sizeof 和strlen的區別
sizeof和 strlen 有以下區別:
sizeof是一個操作符,strlen是庫函數。
sizeof的參數可以是數據的類型,也可以是變數,而 strlen只能以結尾為『 『的字元串作參數。
編譯器在編譯時就計算出了 sizeof 的結果。而 strlen 函數必須在運行時才能計算出來。並且 sizeof
計算的是數據類型占內存的大小,而 strlen計算的是字元串實際的長度。
數組做sizeof的參數不退化,傳遞給strlen就退化為指針了。
注意:有些是操作符看起來像是函數,而有些函數名看起來又像操作符,這類容易混淆的名稱一定
要加以區分,否則遇到數組名這類特殊數據類型作參數時就很容易出錯。最容易混淆為函數的操作符就
是 sizeof。
面試題 4:C 語言的關鍵字 static 和 C++ 的關鍵字 static 有什麼區別
在C 中static 用來修飾局部靜態變數和外部靜態變數、函數。而 C++中除了上述功能外,還用來定
義類的成員變數和函數。即靜態成員和靜態成員函數。
注意:編程時 static的記憶性,和全局性的特點可以讓在不同時期調用的函數進行通信,傳遞信息,
而 C++的靜態成員則可以在多個對象實例間進行通信,傳遞信息。
面試題 5:C中的 malloc 和C++中的 new有什麼區別
malloc和 new有以下不同:
(1)new、 是操作符,可以重載,只能在 C++中使用。
(2)malloc、free是函數,可以覆蓋,C、C++中都可以使用。
(3)new 可以調用對象的構造函數,對應的 調用相應的析構函數。
(4)malloc僅僅分配內存,free 僅僅回收內存,並不執行構造和析構函數
(5)new、 返回的是某種數據類型指針,malloc、free 返回的是void指針。
注意:malloc申請的內存空間要用 free釋放,而 new申請的內存空間要用 釋放,不要混用。
因為兩者實現的機理不同。
面試題 6:寫一個「標准」宏 MIN
#define min(a,b)((a)<=(b)?(a):(b))
注意:在調用時一定要注意這個宏定義的副作用,如下調用:
((++*p)<=(x)?(++*p):(x)。
p指針就自加了兩次,違背了 MIN的本意。
面試題 7:一個指針可以是 volatile 嗎
可以,因為指針和普通變數一樣,有時也有變化程序的不可控性。常見例:子中斷服務子程序修改
一個指向一個 buffer的指針時,必須用 volatile來修飾這個指針。
說明:指針是一種普通的變數,從訪問上沒有什麼不同於其他變數的特性。其保存的數值是個整型
數據,和整型變數不同的是,這個整型數據指向的是一段內存地址。
面試題 8:a 和&a 有什麼區別
請寫出以下代碼的列印結果,主要目的是考察 a和&a的區別。
#include
void main( void )
{
int a[5]={1,2,3,4,5};
int *ptr=(int *)(&a+1);
printf(「%d,%d」,*(a+1),*(ptr-1));
return;
}
輸出結果:2,5。
注意:數組名 a可以作數組的首地址,而&a是數組的指針。思考,將原式的 int *ptr=(int *)(&a+1);
改為 int *ptr=(int *)(a+1);時輸出結果將是什麼呢?
面試題 9:簡述 C、C++程序編譯的.內存分配情況
C、C++中內存分配方式可以分為三種:
(1)從靜態存儲區域分配:
內存在程序編譯時就已經分配好,這塊內存在程序的整個運行期間都存在。速度快、不容易出錯,
因為有系統會善後。例如全局變數,static變數等。
(2)在棧上分配:
在執行函數時,函數內局部變數的存儲單元都在棧上創建,函數執行結束時這些存儲單元自動被釋
放。棧內存分配運算內置於處理器的指令集中,效率很高,但是分配的內存容量有限。
(3)從堆上分配:
即動態內存分配。程序在運行的時候用 malloc 或 new 申請任意大小的內存,程序員自己負責在何
時用free 或 釋放內存。動態內存的生存期由程序員決定,使用非常靈活。如果在堆上分配了空間,
就有責任回收它,否則運行的程序會出現內存泄漏,另外頻繁地分配和釋放不同大小的堆空間將會產生
堆內碎塊。
一個C、C++程序編譯時內存分為 5大存儲區:堆區、棧區、全局區、文字常量區、程序代碼區。
4
面試題 10:簡述 strcpy、sprintf 與 memcpy的區別
三者主要有以下不同之處:
(1)操作對象不同,strcpy的兩個操作對象均為字元串,sprintf的操作源對象可以是多種數據類型,
目的操作對象是字元串, memcpy 的兩個對象就是兩個任意可操作的內存地址,並不限於何種數據類型。
(2)執行效率不同,memcpy最高,strcpy次之,sprintf的效率最低。
(3)實現功能不同,strcpy主要實現字元串變數間的拷貝,sprintf 主要實現其他數據類型格式到字
符串的轉化,memcpy主要是內存塊間的拷貝。
說明:strcpy、sprintf 與memcpy都可以實現拷貝的功能,但是針對的對象不同,根據實際需求,來
選擇合適的函數實現拷貝功能。
⑷ 關於java程序員應聘機試
我是剛找到了一個java程序員的工作,現在我告訴你一些具體的問題;
他們首先回讓你自我介紹1-3分鍾,這其中,可能你就要談到,你對java的了解吧。然後問你曾經做過那些關於java的項目(或者自己編寫),他們會問你對bean是否了解,然後會問,你對j2ee了解多少,問這個的目的,對數是想問你,對ejb有多少了解,然後會問你對應用伺服器,比如weblogic和websphere了解多少。因為你面試的是java程序員,還可能讓你做一份java人證的考試題(1-20道),最後可能會問你關於資料庫的知識在最後,可能就是問你的薪資方面的要求了。
就這些了,這是我面試所經歷的一切。
⑸ php程序員上機面試題(並附答案,回答好的加分)
題集網上有一套php的面試題:http://www.tijee.com/tags/46-php-face-questions/posts
⑹ 程序員考試有上機題嗎
程序員考試有上機題。
程序員(英文Programmer)是從事程序開發、維護的專業人員。一般將程序員分為程序設計人員和程序編碼人員,但兩者的界限並不非常清楚,特別是在中國。軟體從業人員分為初級程序員、高級程序員、系統分析員,系統架構師,測試工程師五大類。
崗位職責
1、對項目經理負責,負責軟體項目的詳細設計、編碼和內部測試的組織實施,對
程序員
小型軟體項目兼任系統分析工作,完成分配項目的實施和技術支持工作。
2、協助項目經理和相關人員同客戶進行溝通,保持良好的客戶關系。
3、參與需求調研、項目可行性分析、技術可行性分析和需求分析。
4、熟悉並熟練掌握交付軟體部開發的軟體項目的相關軟體技術。
5、負責向項目經理及時反饋軟體開發中的情況,並根據實際情況提出改進建議。
6、參與軟體開發和維護過程中重大技術問題的解決,參與軟體首次安裝調試、數據割接、用戶培訓和項目推廣。
7、負責相關技術文檔的擬訂。
8、負責對業務領域內的技術發展動態進行分析研究。