⑴ 做一名優秀的程序員需要什麼條件
(1).要喜歡上寫程序,如果沒有喜歡上,那就要學會去培養。程序員需要整天趴在電腦前,經常沒日沒夜的,非常辛苦,而且工作來不得半點虛假,少寫一個標點符號都不行。喜歡的人,日子過得非常開心,每寫一行代碼,都會有新的成就,尤其當自己的作品被廣泛應用的時候,那種自豪感油然而起。不喜歡的人,坐在電腦前極端無聊,被進度壓得喘不過氣來,天天為找bug改bug生氣。個人深有體會!這個「喜歡」就要大家在學習的過程中去體會。
(1).程序員應該是有感情的,程序員的程序最終是由用戶來評價的,而不是老師,或者我們的BOSS。設計程序時,要講究貼心,境界:我們也是Composer!
(2).程序員應該講究團隊協作,分配給團隊的大項目,不是一人之力能夠應付的,請尊重別人的代碼,以及設計,彼此需要全心全力配合
(3).有堅韌不拔的精神,我們編的不是程,是寂寞。愛上程序設計,靠編程潛移默化性格,大多數成功的程序員都是相信自己的人,所以,多多鼓勵自己一定是最好的。
一、優秀程序員的標准
1. 能夠准確地評估你的工作。
2. 第一時間提交有質量的工作成果。
3. 建立快速的反饋循環。
4. 確保代碼的准確性與後續跟進的協調性。
二、態度生活方面
1.踏實的工作態度;認真負責,少犯錯誤。
2.充滿熱情,努力工作;有團隊合作精神,能善於和別人相處。
3.有預見性,預先感測未知因素預估風險或後果。
⑵ 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和源源不斷的問題,有時會對自己是否適合編程這一問題產生困擾。
作為一名教授全棧Web開發的教育工作者,我已經帶領很多新手成為了程序員。好消息是,我發現沒有任何人是不能學習編程的。我把它看作是一種基本的人類技能,就像閱讀、寫作和算術一樣,任何人都可以做到。它是我們人類能力的一部分,只是需要學習。
在過去的幾年的教學中,我目睹了不同的學生在學習過程中的斗爭,以及在他們的掙扎中出現的一些共同問題。
下面的列表將幫助你了解你是否喜歡編程
1、缺乏好奇心
如果你對計算機是如何工作的缺乏好奇心,那麼,作為一個程序員,你將永遠不會成功。
學習的一個基本要求是對你所學的東西有積極的興趣。如果你沒有一個對技術好奇的頭腦,你就沒有精力去堅持學習要成為一個成功的程序員所需要的廣博而深入的知識。相比之下,技術的世界就像一個巨大的海洋,裡面充滿了各種有趣的領域、相互聯系的思想和各種可能,它們可以激發人們的想像力。想要潛入這片海洋並發現你所能發現的一切,需要內在的動力。
找到你的好奇心:問問你自己,編程是否真的讓你感興趣?如果沒有興趣,去找你感興趣的東西,以節省時間和精力。但是如果你的答案是感興趣,那麼就強迫自鄭襪己去發現一些你以前沒有注意到的新事物,認識到浩瀚的技術海洋,再往下潛一點。
2、缺乏自主性
如果你不培養自己解決問題的能力,你就永遠不會成為一個成功的程序員。
毫無疑問,要成為一個成功的開發人員,你必須對自己的學習能力充滿信心。這實際上是一項基本的生活技能,如果你年滿18歲,沒有人有義務教你任何東西。這就是現實。當你想學習技術所需的技能時,首先要學會的是,在谷歌中輸入你想要的任何東西並獲取你需要的信息。除此之外,所有編程語言都有文檔和規范,這些文檔和規范對語言的工作方式解釋的非常清楚,它們就像字典一樣。作為一個程序員,最快速、最可靠的學習方法就是簡單地閱讀這些文檔。
當你有問題的時候,在問別人答案和查閱官方文檔之前,強迫自己先搜索一下,節省別人的時間。
3、面對問題缺乏毅力
如果你在遇到問題時輕易放棄,作為一個程序員,你將永遠不會成功。
編程的本質是解決問題,這也是計算機產生的全部原因!每當你開始編寫一個程序時,你總是會遇到一大堆問題。一旦你解決了一個問題,那麼幾乎總是有另一個問題在後面等著你。你在進步,但總是會有新的問題要面對。
這堆問題會讓人望而生畏,令人感到沮喪。如果你覺得程序應該「能用就好」,那麼你就沒有精力堅持下去,因為問題還在繼續出現,它們會一點一點地擊潰你的情緒和決心。從字面上來說,你的工作就是找出程序為什麼不能跑起來。
從我在授課上的經驗來看,通常每個班都有一兩個學生,和其他學生相比,他們似乎更容易遇到更多的問題——通常是非常隨機和模糊的問題。我提醒學生,他們面對的問題越多,學習越深入、越徹底的可能性就越大。如果他們能通過這些問題獲得深刻的理解,他們會很快發現他們變得更加自信了,因為他們面對和解決的問題比普通學生多。
你需要認識到,問題不僅僅只是問題,它實際上也是挑戰。你所面臨和克服的每一個挑戰都能讓你更深入地理解技術,更好地面對新的挑戰,並迅速解決舊的挑戰。
4、解決問題之後沒有成就感
如果你在解決一個問題後沒有興奮感和成就感,作為一個程序員,你將永遠不會成功。
與上一個問題相關的是,你成功地解決了一個問題,卻缺乏「良好的感覺」。當修復bug和問題變成了一個永遠不會結束的事情時,你會失去與克服問題的動力。
當你解決一個問題時,你需要的是多巴胺的釋放。這類似於在電子游戲中完成了一個關卡,或者解決了一個像縱橫字謎或數獨這樣的挑戰。我們都知道,堅持通過一項挑戰,然後最終贏得比賽,一般都會有成就感和興奮感。但是如果你失去了感受這些快樂的能力,或者從一開始就沒有真正有過這些感受,你將無法體驗到編程帶來的快樂。如果你把編程看作是一種磨礪,你只想盡可能容易地得到結果,那麼你永遠不會真正成為一個成功的程序員。
無論何時,當你解決了一個一直在努力解決的問題時,無論這個問題多麼微小,你總是為你的成就感到驕傲。你需要休息一下,祝賀你自己完成了一項出色的工作,讓成功的感覺滲透進你的心裡,為你即將面臨的下一個問題注入活力。
5、無法獨立思考
如果你期望別人為你著想,並且主動看到你自己所在的處境喊純激的細節,你將永遠不會成為一個真正成功的褲脊程序員。
當你在學習新的東西時,很容易感到缺乏知識和經驗,並沒有自己的觀點。主動做事或者說錯話似乎是有風險的。對於錯誤,我們的內心都有一種恐懼感。當對錯誤的恐懼抑制了你的探索和好奇心時,你會扼殺開發真正知識、從經驗中獲得的知識和「失敗」的能力。當你需要依靠「權威」的觀點、一個受歡迎的博客、一個最佳實踐或「教科書」的答案時,那麼你就沒有真正地整合編程的知識。你需要對什麼有效,什麼無效形成自己的觀點。你需要理解為什麼你認為你的解決方案有效,以及使用這個方案有什麼好處。你需要建立一個微妙的視角,超越那些顯而易見的東西。你需要能夠「證實」你的立場。
為自己著想。通過你的經驗和批判性思維技巧,發展出你自己的思想體系。做出合理的猜測,堅定立場,並願意隨著新信息的出現而改變立場。
6、僵化、狹隘、混亂的思維
如果你的思維僵化,並且難以保持代碼的條理化,那麼你將永遠無法成為一名真正成功的程序員。
我有時在學生中看到兩個極端。第一種是僵化和狹隘的思維方式。擁有這種態度的人拒絕幫助,盡管會有反饋,但不會有改變。他們看事情只從一個角度看,別人給的建議被忽略。
我看到的第二個極端是思維混亂。學生們似乎使事情變得更加復雜,他們的代碼雜亂無章,難以理解。他們過度思考問題,寫100行代碼,而其中只有10行是有用的。
當這兩種心態結合在一起時,結果就是一種用蠻力的方法去設計程序。我們需要的是回顧解決方案,重新評估它,放棄最初的方法,並重新組織方法。
無法看到其他可能性或無法反思反饋會抑製成長的能力。思維雜亂無章會減慢你的成長速度,阻止你看到那些原本顯而易見的模式。你的工作質量也會下降。
自我反省。你需要退後一步,看看你是接觸的事物的大局是什麼樣子的。你要怎樣才能做得更好?你能做些什麼讓你的生活更輕松嗎?你需要什麼來幫助你?
7、需要「正確」的答案,而不是識別一系列「好」和「壞」的答案的方法
如果你認為編程的最終目標是找到正確的解決方案,而不是一系列解決方案,那麼作為一個程序員,你將永遠不會真正成功。
當開始學習技能或編程時,學生往往想知道他們所做的是否「正確」,而答案總是「視情況而定」。
計算機科學是一門評估權衡的科學。在不同的環境下,哪條路更好,這完全取決於所處的環境和目標。當你把編程看作是一個有正確答案或錯誤答案的測試時,你就失去了對全局的認識,放棄了你的創造力。任何答案都可以是「正確的」,前提是你能根據具體情況證明這一點。現實情況是,編程更像是寫詩或寫短篇小說(如果程序很大,則可能是小說)。在你的代碼中可以看到一種美學和美麗,這些東西有時只有你和其他程序員能夠識別出來。你決定解決方案的原因,以及你對答案的設想,比「正確的方式」或「錯誤的方式」更重要。擁有一個藝術家的頭腦可以讓你編的程序具有選擇和可能性,而不是認為只有一種處理方式。這就是編程的美——有很多方法可以解決問題,考慮不同的可能性,然後決定哪種方法最適合當前的情況。
創造性很重要。你要認識到,解決問題的方法有很多種,通過經驗和積累,你會對哪些解決方案比其他解決方案感覺更好產生細微的理解。縱觀全局,想像不同的可能性,相信你的直覺,你會得到更滿意、更好的解決方案
如果你對學習編程感興趣,我鼓勵你開始這段旅程。記住提到的七條,並開始學習、探索在線資源,這些資源可以讓你快速學習。你不會後悔的!
合格程序員,對於一種計算機程序設計語言,我們將其分為語法、語義、語用三個層面。僅僅掌握語法是不夠的,不算學好。但是很多人,在履歷上寫自己掌握(甚至精通)了某種語言,其實就是解了語法,會寫簡單的程序而已。這就是為什麼我們行業特別不喜歡「精通」這個詞的原因。
現代軟體開發,規模都比較大,不是寫個HelloWorld那麼簡單,也不可能每個項目每件事都從頭開始造輪子,我們都是站在前輩、同行們的肩膀上工作的。也就是說,語言之外,還有「庫」這個東西需要掌握,不然就寸步難行。庫有語言級別支持的BuildIn的庫,比如JAVA裡面的util、concurrent,CPP的IOSTREAM、STL等等;更多的更豐富的還有第三方提供的庫,比如JDBC、Servlet、EJB的implementations等等。這些東西掌握了,幹活兒才可能得心應手,不然寸步難行。
比Libaray更高層一些的,是Framework。框架的作用在於,將某一方面開發的BestPractices搞到一起,給你提供一個更易用的、不關注底層的腳手架。比如做企業應用的,SpringFramework是標配了;訪問數據,Hibernate或者MyBatis也離不開,很少直接用JDBC去幹活的了;做WEB的,各種MVCFramework起碼得掌握一兩個(springmvcorstruts2?);做網路的,Netty,MINA怎麼也得掌握一個......總而言之,框架是繞不過去的一個門檻。
然後呢,就是環境、輔助工具。應用伺服器,怎麼也得會調試配置那麼兩個吧。TOMCAT是入門標配,JBOSS,WEBLOGIC之類,起碼要弄得跑得起來;針對不同應用場景,還要會選擇。開發/管理工具,ECLIPSE是標配、GIT和SVN起碼要搞熟一款;其它比如單元測試工具、Build工具、測試覆蓋率、CodeReview這些插件...也得知道怎麼用。
最後,通用的,計算機科學的基礎,不說多扎實,至少不能一竅不通。說起來就那幾大件,操作系統、數據結構&演算法、編譯原理、體系結構。要懂一點點,你才知道你編的程序是怎麼run起來的,哪兒可能存在效率問題性能瓶頸,除了問題知道怎麼debug。如果僅僅把計算機當作一個黑盒子,那也不算學好了。
最最後,還有一樣,就是你要訓練一下,快速理解領域知識的能力。你參與做一個項目,你懂的只是上面這些專業知識,但並不懂客戶的行業知識。如何盡快地理解業務,並用你手頭的工具實現業務邏輯,這點對程序員而言是非常重要的,否則你做的東西客戶總不滿意,GET不到重點,很麻煩。
我覺得這是一個合格的程序員的基本要求。你看,我並沒要求你懂需求工程、懂項目管理、懂架構設計、懂很多演算法、模式,甚至更深的專業知識。
⑷ php程序員上機面試題(並附答案,回答好的加分)
題集網上有一套php的面試題:http://www.tijee.com/tags/46-php-face-questions/posts
⑸ 程序員人品面試題及答案,HR必備!
在我們招聘技術的時候,如果只是一個面試官面試,通常會遇到,面試管徇私舞弊,類似狗眼看人低,或者遇到高手心存嫉妒不願招聘此人的情況,從而剔除掉面試的人才,無法有效招聘到公司所需的人。
如何避免面試人員的徇私舞弊,就至關重要,我們統長可以通過加試的流程,或者加面的流程來規避這種事情,通常情況下,我們也可以通過筆試+面試+面試2的流程進行,這樣的環節越多,面試官徇私舞弊的問題就越少,對於重要的崗位我們依然要綜合考慮清晰,不能讓人品差的人混入。
1.排擠或者拉幫結派,在公司內部製造不和睦的情景。
2.影響公司的正常運營,還可能存在貪污腐敗像閑。
3.可以吃回扣的崗位,尤其是采購會給公司造成重大的損失。
對此我總結和個人的經驗,整理如下的10個人品測試題,每小題10分共100分,同樣的您可以和技術題混合在一起對求職者進行這樣的筆試。
如果A是您的直屬領導,當遇到了緊急情況,且你正在忙手頭要緊事,需要你的協助或者幫助時你會怎麼做?( )
A.盡力而為 B.手上工作忙,會建議找別人 C.我沒有必要幫助他人 D.放下手頭要緊的事,去協助領導
答案:B
解析:作為領導,和下屬都屬於公司員工,沒有誰更加需要幫助,只有自己的工作職責,和同事之間的互幫互助行為,二遇到這種事,應是優先做好的自己的事,再去幫助他人,選A的人是屬於,阿諛奉承拍馬屁的類型,選C的人是極度理性,且規規矩矩的人,選D的人是屬於,斜度個人工作職責的行為。
如果A是您的直屬領導,他今天搬家,告訴你去他家裡幫忙,他這種行為屬於?( )
A.徇私舞弊 B.私事公辦 C.小氣 D.欺負員工
答案:B
解析:作為領導,搬家時個人私事,不能要求任何的員工幫忙,且給錢也不行,這種行為屬於私事公辦。
直屬的領導,再一次工作失誤後,果斷甩鍋下屬,且指責有續,領導的這種行為是否屬於正常范疇,遇到這種的事情,領導最好應該怎麼做?
簡答題:兩問,行為和怎麼做。
在公共場所,因為瑣事辱罵他人或者領導,這種行為屬於什麼行為,是否違法,能否維權?
簡答題:三問,行為、違法和如何維權,主要考的求職者對法律和道德的認知。
當你下班途中,遇到一個摔倒的老人,這附近有很多碰瓷的傳聞,且沒有攝像頭和路人,這時候你會怎麼做?
A.默默路過,並報警。 B.先報警,然後扶起老人 C.錄視頻,且報警,扶起老人 D.回去叫人
答案:C
解析:只有C是最好的處理方式,且能體現出這位求職者的心思縝密。
如果以後你面試新人,遇到一個能力特別強的人,但沒有學歷,且人說話很沖,工作能力完全過關,你會向領導反應錄取他嘛?()
A.不會,沒學歷 B.可能對我有影響,拒絕錄用 C.繼續等待其他合適人選 D.和領導與同事商議後錄用
答案:D
解析:
選A的人可以看出這不是一個好的員工。公司是一個商業組織,目的是為了盈利,能力強的人往往求之不得,不能因為學歷問題剔除。
選B的人可以看出這是一個小氣,且人品和眼界都很低的員工,建議直接pass,後續對公司的發展也不好。
選C的人可以看出是個負責任的員工,會選擇繼續等待更合適的人選。
在你身上發生了一件事,並不是丑聞,也不是壞事,就是一件很平常的事情,這時你會覺得?()
A.自己是焦點 B.不想去上班 C.自己丟人了 D.散布的這個人真可惡 E.平平淡淡
答案:E
解析:有心理疾病的人,才會覺得自己是焦點,才會有負面情緒。
如果你是個技術大牛,且領導要求你必須教導其他人,你會怎麼做?()
A.熱心是不需要強迫的,會不代表一定要交
B.不聽從領導的話
C.要求公司給予,教導他人的費用。
D.接受領導的要求去教人。
答案:C
解析:技術是自己的,屬於個人,不屬於公司,且教不教不需要強制,強制屬於違法行為,懂得不代表義務教導,這屬於行為綁架的行為。
領導一直強制你做事,且必須你做,出了事就甩鍋給你,你會怎麼做?()
A.辭職不幹 B.向更高領導舉報 C.果斷拒絕 D.頂撞領導
答案:B A
解析:有這樣愛甩鍋的公司領導,也不是什麼好公司,在這里工作不是勾心鬥角就是你爭我奪,故此B和A都是對的。
假如你遇到困難,你不想得到別人的幫助,但是就是有人要幫你,這種行為屬於什麼行為?()
A.強人所難 B.太過熱心 C.不考慮其他人感受 D.不尊重我的主觀意圖
答案:A B C D
解析:這是多選題,都對,別人不需要那麼就應該尊重別人,即使是送黃金,也會有人不需要的時候,不需要而自以為是強迫別人接受,就屬於強人所難,不考慮其他人感受,不尊重個人主觀意圖。
⑹ 程序員選擇公司的八個標準是什麼
當各位程序員們在找工作的時候,是否有一些建議能夠讓大家很好的選擇一家對的,適合自己的公司呢?答案是有的。那就是參考程序員選擇公司的八個標准!
一、程序員選擇公司的八個標准
不知道大家聽說過Joel測試(約耳測試)沒?約耳測試是JoelSpolsky發明的用於判斷一個軟體團隊質量好壞的快速測試方法。如果你正在找工作,使用Joel測試來剔除一些不良僱主絕對是個明智的抉擇。
下面我很榮幸地為大家介紹Codypo測試,又名8問題檢測法,只需回答這8個問題,就能判斷工作的好壞。我們也可以在面試的時候,偷偷給這家公司測試一下,如果你的回答裡面有2個yes,那麼就需要拉響警報,不要再考慮這家公司了。
1.我的薪資是否低於市場價值水平?
如果有鬧螞公司願意提供4萬8的月段燃薪搜羅擁有10年C++多線程編程經驗的骨灰級程序員,我想說這公司肯定是瘋了!呵呵,這種瘋言瘋語絕非長久之計,因為只有你的價值大於給你的價格,才會有公司願意要你,所以各位還是不要心存妄想,現實一點吧。
2.我需要隨傳隨到嗎?
沒人樂意隨時待命,因為一旦如此,就意味著哪怕是周末的凌晨3點,就算是支持門戶頁面上的Reset按鈕呈現的藍色調與預想的不同,也會call你。當然偶爾一兩次我們也可以理解和容忍。
3.我是IT人員嗎?
程序員寫軟體、支持軟體,天經地義。但這並不意味著,你就是專門搞電腦的IT人員了。試問,公司人員會不會因為一點點計算機的瑣事就來麻煩你,比如說某位員工安裝了加菲貓的屏保之後她的筆記本就發生異常了?
4.公司滿足我們配備多個顯示屏的要求嗎?
我仍然清楚的記得,那是在1998年,我們需要整天盯著一台17″的顯示屏,苦不堪言。現在,100美元就能買到一台又大又薄的LCD了。如果你的公司認為讓你的效率加倍不值得200美元,那麼這公司可能是個不以盈利為目的古怪億萬富翁拿來開玩笑的玩具吧?
5.會不會維護一些古老的系統,這些老系統是用什麼語言寫的?
幹得久了,你可能會聽到「好,下面我們要進入RubyonRails語言系統,但是首先我們需要你先解決一些VB4的問題。呵呵,千萬不要想的太簡單了。
這個VB4系統將一直苟延殘喘,讓你頭大無比。
6.我上網是被監控和過濾內容的嗎?
程序員需要解決問題,需要高效地解決問題,資源是必須的。而互聯網堪稱取之不盡用之不竭的資源寶庫。如果一家公司不能與時俱進,甚至阻止員工自由使用Usenet/谷歌/StackOverflow,把員工當做小孩子和色情狂看待,那待著還有什麼意思?
7.就我一個程握彎虛序員嗎?
我們能成長為一枚程序員,首先應該感謝的是我們的同事。我們互相解惑、審查對方的代碼、我們在一起討論,一起經歷從一片茫然找不到方向到想出一個個創造性的建議。如果只有你一個程序員,那是得不到任何技術反饋的,而且我們自己本身也成長不了。此外,當出現問題的時候,你也只能靠自己的直覺判斷對錯。
8.需要每周出差不?
出差有時候是必不可少的,特別是那些與客戶面對面開會或者會晤外派同事的時候。但是如果需要你每周離開家去出差那就要三思了。
上述8個問題構成了一套完整的工作測試。當然,並不是每一項都必須達到的(比如說,在初創企業中,我們就得身兼IT人員或者24小時隨傳隨到)。
無論項目有多大的潛力,隊友有多大的能力,但凡是在這樣一個不良於行的大環境中,你,一個小小的程序員是做不了真正有意義的工作的。如果一家公司上述8問題統統回復yse,那它要麼是在走下坡路,要麼已經在大廈將傾的過程中了。
⑺ 軟考程序員滿分是多少
軟考程序員包含兩個考試科目,各科目滿分均為75分。山賣程序員合格標准基本上穩定在各科目45分合格,單科及格成績不保留,也不能轉到下次考試時使用。
程序員屬於軟考初級資格考試,程序員考試包含基礎知識與應用技術,各科目滿分均為75分,合格標准檔唯襪基本上穩定在45分,單科及格成績不保留,也不能轉到下次考試時使用。程序員各科目考試時間安排在一天,上午考基礎知識,下午考應用技術。
程序員考試科目
1、計算機硬軟體基礎知識,考試時間為150分鍾。
2、程序設計,考試時間為150分鍾。
溫馨提示:因考試政策、內容不斷變化與調整,獵考網提供的以上信息僅供參考,如有異議,請考生以權威部門公布的內容為准!
下方免費復習資料內容介紹:2023年系統分析師下午真題及答案解析
格式:PDF大小:664.13KB 2022年系統規劃與管理師上午真題及答案解析
格式:PDF大小:463.15KB
資格考試有疑問、不知道如何總結考點內容、不清楚報考行激考試當地政策,點擊底部咨詢獵考網,免費領取復習資料
⑻ 想要成為一名程序員的話,都必須要掌握哪些技能
編碼是軟體開發人員的必備方面。在每個團隊中,每個開發人員必須被同一技術面試過程僱用。因此,我們可以推斷編程器或更少才能具有類似的編程技巧。在這種情況下,一個人如何成為一個好程序員?如果他們做與同齡人的努力做了什麼,他們可以做些什麼?如果你正在考慮這個問題,證明你已經超過了他人的團隊,你知道你想在專業領域擁有長期的發展,並編程效率不好。成為一個優秀的軟體開發人員必須擁有的技能。您可以編寫一個干凈整潔的代碼來確定您是否是優秀軟體開發人員的標准之一。通過查看代碼結構,人們可以輕松判斷您是一個能力的程序員。
只要有足夠的時間,大多數開發人員都可以完成交付,但不幸的是,在軟體行業中,時間是最有價值的東西,如果你公司在一個激烈的市場環境中,如果公司不能先進入市場或者與競爭對手同時進入市場,它將失去市場份額,這是至關重要的。因此,軟體開發人員需要有效地管理他們的時間。為此,您需要知道如何准確評估您的時間效率。當你第一次時,你會在評估中犯錯誤,但它是正常的,每個人都會產生類似的錯誤,但聰明的開發人員應該能夠來自他們。課程是學習和改進的。軟體開發專業是激烈的競爭。開發人員的熟練程度可能有所不同,但每個軟體開發人員都知道如何以一種或多種編程語言編寫代碼。在軟體行業中,依靠編碼技能來實現指數增長是不夠的。不要讓你的職業生長在幾年內。在您職業生涯的每個階段,實現您想要的目標,實現上面提到的七種技能,成為一個優秀的軟體開發人員。