色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

程序員:挑戰(zhàn)無(wú)處不在

  面試過(guò)一些應(yīng)聘者,當(dāng)我問(wèn)到為什么換工作的時(shí)候,他們都會(huì)告訴我,現(xiàn)在的工作沒(méi)有挑戰(zhàn),無(wú)聊,所以想換一個(gè)有挑戰(zhàn)的工作。我總是為有這樣的認(rèn)識(shí)的朋友感到惋惜,因?yàn)槲铱偸钦J(rèn)為有挑戰(zhàn)的東西無(wú)處不在啊,不能因?yàn)楣ぷ魃蠜](méi)有,自己就放縱了自己。比如,面試過(guò)一個(gè)做地圖的工程師,他的工作是做計(jì)算地圖上任意兩點(diǎn)的最短或最優(yōu)路徑的一部分功能。我覺(jué)得這個(gè)事很有挑戰(zhàn),也有難度,應(yīng)聘者說(shuō),沒(méi)什么挑戰(zhàn),因?yàn)樗龅臇|西只是調(diào)用相關(guān)的算法庫(kù)。他在這個(gè)項(xiàng)目干了 2 年了,當(dāng)我問(wèn)他有沒(méi)有看過(guò)算法庫(kù),知不知道地圖是怎么存儲(chǔ)的?他卻告訴我,因?yàn)闆](méi)有去做,所以就沒(méi)有去了解,等做的時(shí)候再了解(我希望有這樣想法的人都去看看程序員的謊謬之言還是至理名言?)。這樣的例子很多,很多應(yīng)聘者在面試中不能和我一起解決某個(gè)問(wèn)題的時(shí)候,比如:OOD,數(shù)據(jù)庫(kù)設(shè)計(jì),系統(tǒng)設(shè)計(jì),等,他們都會(huì)告訴我,不好意思,因?yàn)闆](méi)有做過(guò)相關(guān)的事情,所以就不懂了,所以,他需要一個(gè)像我們這樣的項(xiàng)目來(lái)學(xué)習(xí)和鍛煉。

  但另外一方面,他們都會(huì)告訴我他們對(duì)技術(shù)充滿和熱情和興趣,有著很強(qiáng)的學(xué)習(xí)能力,也有很能吃苦的態(tài)度。這也許是某面試寶典上看來(lái)的,面經(jīng)上可能都會(huì)說(shuō),如果面對(duì)不能作答問(wèn)題,可以說(shuō)一下自己的態(tài)度和決心。可惜的是,我并不這么想的,我在我的兩篇關(guān)于招聘的文章里(我是怎么招聘程序員的再談我是怎么招聘程序員的)都說(shuō)過(guò)一些我對(duì)如何擇人的想法。這里重點(diǎn)說(shuō)明一下其中兩個(gè)觀點(diǎn):

  • 關(guān)于熱情和態(tài)度,說(shuō)白了就是不要給自己找借口。比如:“工作忙事多沒(méi)時(shí)間學(xué)所以可以不懂”,“工作中沒(méi)用到所以可以不懂”,“工作沒(méi)有挑戰(zhàn),一直沒(méi)有遇到合適的項(xiàng)目”等等。時(shí)間可以擠,工作之余可以學(xué),隨時(shí)承地去思考,挑戰(zhàn)是無(wú)處不在的…… 想想那些你有熱情的事,你會(huì)發(fā)現(xiàn),幾乎沒(méi)有什么可以阻止你去做那些事。
  • 對(duì)于某些事情,如果以前沒(méi)有在你身上發(fā)生過(guò),那么這個(gè)事情在未來(lái)也不會(huì)發(fā)生。如果你以前沒(méi)有對(duì)你接觸過(guò)的東西去學(xué)習(xí),去深挖,去思考,去改善,那么我不會(huì)相信你會(huì)在未來(lái)面對(duì)新的東西的時(shí)候也會(huì)有這樣的態(tài)度;如果你以前沒(méi)有用業(yè)余時(shí)間學(xué)習(xí)一些項(xiàng)目之外的東西,那么我也不會(huì)相信你會(huì)在未來(lái)會(huì)這樣做;如果你以前沒(méi)有把你的熱情和態(tài)度轉(zhuǎn)換成你的知識(shí),經(jīng)驗(yàn)和成果,那么我也不會(huì)相信你會(huì)在未來(lái)能做到。

  這兩個(gè)觀點(diǎn)可能太刻薄了,但是,當(dāng)我回想我自己的經(jīng)歷的時(shí)候,觀察程序員的成長(zhǎng)過(guò)程的時(shí)候,我發(fā)現(xiàn),優(yōu)秀的程序員都是相似的,當(dāng)他們還在是一個(gè)菜鳥的時(shí)候,就已經(jīng)有各種成為高手的苗頭了,這些苗頭就是——他們熱愛(ài)思考,喜歡解決難題,對(duì)新鮮事物非常好奇,總是找人討論,可以用自己的業(yè)余時(shí)間狠命研究很多和工作無(wú)關(guān)的技術(shù),會(huì)在業(yè)余的時(shí)間里寫些有趣的小程序,或是會(huì)把自己的思路書寫下來(lái),等等,等等

  一些問(wèn)題

  我這樣說(shuō),大家可能會(huì)覺(jué)得“挑戰(zhàn)無(wú)處不在”這句話太虛了,而且可能不明白什么叫“熱愛(ài)思考”,這里,我把我的或別人的思考的東西羅列一下,這些問(wèn)題,有的會(huì)讓我思考推敲,有的會(huì)讓我瘋狂地查資料,問(wèn)人,或是找人討論,詢問(wèn)。大家不妨可以跟著我一起思考一下。

  酷殼上有一些小問(wèn)題,比如:火車運(yùn)煤?jiǎn)栴}賽馬問(wèn)題,這些問(wèn)題都不夠?qū)嶋H,我覺(jué)得也這些問(wèn)題有點(diǎn)無(wú)聊,我們不妨觀察一下我們身邊的東西,我們就可以看到很多有挑的戰(zhàn)的東西,對(duì)于這些問(wèn)題,如果是你來(lái)做,你會(huì)怎么做呢?

  0)許多年前,當(dāng)我看到珊瑚蟲 QQ 把 IP 轉(zhuǎn)成地實(shí)際地址的時(shí)候,我就在思考,如果我有一個(gè) IP 網(wǎng)段的數(shù)據(jù)(全球 IP 地址數(shù)據(jù)),我怎么來(lái)完成這個(gè)功能呢?比如:某地點(diǎn)的 IP 網(wǎng)段是:10.10.1.* – 10.10.5.*。我要有一個(gè) IP 地址是:10.10.3.20,我怎么匹配這個(gè)網(wǎng)段?用 Hash 表嗎?好像有問(wèn)題。把 IP 字串轉(zhuǎn)成整型?排序+二分法,好像更容易解決一些,但是如果有一些修改的話好像有點(diǎn)不方便。用樹型結(jié)構(gòu)(森林)會(huì)不會(huì)更好一些呢?如果我要通過(guò)地點(diǎn)反查 IP 段呢?

  1)網(wǎng)上短網(wǎng)址服務(wù),你有想過(guò)這個(gè)短網(wǎng)址生成的算法是什么,如何能做到能最短?怎么查詢?你也許覺(jué)得會(huì)用 key-value 的 NoSQL。那么,如果對(duì)于同一個(gè) URL,如果要重用已生成的短網(wǎng)址,你怎么用 key-value 的 NoSQL 來(lái)解決?

  英漢詞典的檢索和這個(gè)很相似,如果通過(guò)英文查漢語(yǔ),又通過(guò)漢語(yǔ)查英文?如果是N多種語(yǔ)言的互相翻譯呢?你的數(shù)據(jù)存儲(chǔ)和檢索如何做呢?

  2)當(dāng)我看到 Dropbox 這樣的云同步的軟件的時(shí)候,我不知道你是否會(huì)和我一樣會(huì)去思考,在多個(gè)設(shè)備間的文件同步是怎么做的?如果網(wǎng)盤上有幾萬(wàn),甚至幾百萬(wàn)個(gè)文件,當(dāng)要和我的本地?cái)?shù)據(jù)同步時(shí),他如何比較經(jīng)濟(jì)地知道哪些文件更改了?需要向服務(wù)端同步或是向客戶端同步。更進(jìn)一步,你有沒(méi)有想過(guò)沒(méi)有中心結(jié)點(diǎn)的文件同步問(wèn)題?你有沒(méi)有想過(guò),文件沖突的問(wèn)題?

  3)我們的新員工入職的時(shí)候,有一些公司會(huì)給新員工的帳號(hào)生成一個(gè)隨機(jī)口令,然后新員工可以在登錄后修改口令(我一直在想我們的銀行應(yīng)該為用戶生成一個(gè)隨機(jī)口令,而不是設(shè)置一個(gè) 6 個(gè) 0 或是 6 個(gè) 8 的初始口令)。那么,對(duì)生成隨機(jī)安全口令的算法知道怎么做嗎?如果你寫出這個(gè)算法來(lái)了,你怎么證明這個(gè)算法是足夠隨機(jī),生成的密碼強(qiáng)度足夠大的?(你會(huì)發(fā)現(xiàn),測(cè)試口令是否隨機(jī)是否安全的程序,會(huì)比生成器更難寫)

  4)關(guān)于動(dòng)態(tài)密碼 RSA SecurID(如下圖),這個(gè)小設(shè)備上的 6 位數(shù)字會(huì)每 60 秒變一次,在你登錄的時(shí)候,需要輸入這 6 位數(shù)字,服務(wù)器上會(huì)認(rèn)證這 6 個(gè)數(shù)字,那么這個(gè)事怎么做?再試想一下,這樣的小設(shè)備我要發(fā)給我的客戶,我希望我的每個(gè)客戶都使用不一樣的隨機(jī)算法,就算是算法一樣,算法的種子也不能一樣。那么,如果我的客戶一共有百萬(wàn)甚至千萬(wàn),我的服務(wù)端怎么管理這些用戶的 SecurID?

  5)看看我們的網(wǎng)銀或是 ATM 的用戶登錄功能,如果你登錄時(shí)輸錯(cuò)口令超過(guò) 3 次以上,你的帳號(hào)就會(huì)被凍結(jié),需要去柜臺(tái)重置口令。這個(gè)功能看上去很安全,因?yàn)榭梢苑乐购诳驮诰€嘗試破解你的登錄口令。不過(guò)這又帶來(lái)了另一個(gè)問(wèn)題,如果有一個(gè)惡意用戶知道你的卡號(hào),他就上網(wǎng)或是造個(gè)卡故意輸錯(cuò)你的口令,導(dǎo)致你的帳號(hào)被凍結(jié),讓你一次又一次地去銀行排隊(duì)重置。面對(duì)這樣的情況,你該怎么解決?

  6)當(dāng)你在網(wǎng)上購(gòu)物的時(shí)候,你會(huì)去一些電子商務(wù)的網(wǎng)站,這些網(wǎng)站都會(huì)對(duì)他們的產(chǎn)品進(jìn)行分類,有大分類有子分類。你進(jìn)到分類后,你可以通過(guò)不同的屬性來(lái)過(guò)濾不同該分類下的商品,注意,不同分類下的商品的過(guò)濾屬性不一樣,如,手機(jī)分類和電視分類的屬性都不一樣。試問(wèn),你如何設(shè)計(jì)你的數(shù)據(jù)庫(kù)表結(jié)構(gòu)?

  7)當(dāng)你在泡各種論壇或 SNS 社區(qū)的時(shí)候,你會(huì)看到,用戶在互相回復(fù)的時(shí)候存在一個(gè)問(wèn)題,尤其是用戶量很大的時(shí)候,大家的回復(fù)完全交織在一起什么也看不清楚。以前有的論壇使用樹形列表來(lái)解決這個(gè)問(wèn)題,樹形列表好是好,但是把一棵大樹放在那里還是很難看。Twitter.com 給了一個(gè)非常不錯(cuò)的解決方式,就是所有人的回復(fù)或是回復(fù)的回復(fù)都按時(shí)間線放在一起,如果你要查看某回復(fù)的上下文的話,點(diǎn)擊一下這個(gè)回復(fù)就可以看到了(我在我在“國(guó)內(nèi)微博和 Twitter 的最大不同”中批評(píng)過(guò)這個(gè)事)。新浪微博在禁評(píng)論事件后也開(kāi)發(fā)出了這個(gè)功能。你知道這個(gè)事怎么做嗎?

  更進(jìn)一步,新浪微博的設(shè)計(jì)上有很多的缺陷,單說(shuō)新開(kāi)發(fā)的“查看評(píng)論”功能這個(gè)事來(lái)說(shuō),還是不完美,因?yàn)槟承┰u(píng)論會(huì)隨著轉(zhuǎn)發(fā)帶到別的地方去,他的“查看評(píng)論”功能只能看到當(dāng)個(gè)貼子下的東西,不能把所有轉(zhuǎn)發(fā)出去的貼子的評(píng)論一起綜合起來(lái)。雖然這對(duì)于用戶使用來(lái)說(shuō)沒(méi)有什么在不了的,但是對(duì)于軟件設(shè)計(jì)來(lái)說(shuō),我們不妨做一個(gè)練習(xí),可以思考一下,怎么樣設(shè)計(jì)會(huì)更好。

  再舉一反三,有時(shí)候,我發(fā)現(xiàn)多個(gè)網(wǎng)友會(huì)提出同樣的問(wèn)題,我很想用一個(gè)回復(fù)同時(shí)回復(fù)他們。如果有這樣的功能的話,我們的回復(fù)就會(huì)從一個(gè)樹形變成另外一種形狀了,我們又該如何設(shè)計(jì)才能支持這樣的功能呢?

  8)說(shuō)到新浪微博,我就想多說(shuō)幾句,我最近觀察到了兩個(gè)事:

  • 一個(gè)是驗(yàn)證碼的事,如果你在你的帳號(hào)設(shè)置里設(shè)置了“登錄需要驗(yàn)證碼”,你會(huì)發(fā)現(xiàn),在登錄新浪微博的時(shí)候,僅當(dāng)你輸對(duì)了口令后,系統(tǒng)才會(huì)提示你輸入驗(yàn)證碼。為什么呢?因?yàn)椋@個(gè)“登錄需要驗(yàn)證碼”這綁定在你的帳號(hào)設(shè)置里的,所以,要取這個(gè)設(shè)置,就需要你登錄成功(?!),老實(shí)說(shuō),這個(gè)功能在設(shè)計(jì)上有點(diǎn)二(中國(guó)特色)。如果是你,你怎么設(shè)計(jì)呢?
  • 另一個(gè)事情是新浪微博或 Twitter 的用戶名修改后,被他人@過(guò)的信息就再也鏈接不到你這里來(lái)了。我們來(lái)試想一下,如果是你,你怎么解決這個(gè)問(wèn)題?(我的我的微博里討論過(guò)這個(gè)事,不一定對(duì),供大家參考)

  9)我有時(shí)候我會(huì)發(fā)一些快遞,有時(shí)候是一些小東西,有時(shí)候是一些大包裹,有時(shí)候近,有時(shí)候遠(yuǎn)。我發(fā)現(xiàn)一個(gè)有趣的現(xiàn)象,就是快遞員來(lái)收件的時(shí)候,快遞的價(jià)格都是快遞員自己說(shuō)了算的,我還可以和他們砍價(jià)。我觀察到他們會(huì)以距離,重量大小來(lái)訂價(jià)。于是我在想如果你要運(yùn)營(yíng)一個(gè)物流公司,你作為這個(gè)物流公司的程序員,你需要開(kāi)發(fā)一個(gè)軟件來(lái)標(biāo)注快遞價(jià)格,你會(huì)怎么做?比如,這個(gè)快遞公司會(huì)說(shuō),在北京五環(huán)以內(nèi)是一個(gè)價(jià),以外是一個(gè)價(jià),出省后,上海以北是一個(gè)價(jià),上海以南是一個(gè)價(jià),等等,這只是北京的,如果把全國(guó)的各個(gè)城市到別的城市的價(jià)格都考慮進(jìn)來(lái),還要受到重量,體積,價(jià)格,是否加急等等因素的影響,你的數(shù)據(jù)庫(kù)設(shè)計(jì)要怎么做呢?

  A)國(guó)內(nèi)的水軍太恐怖了。他們活動(dòng)的刷排名,刷信用,刷積分,刷粉絲等等地方,你是否想過(guò)如何解決這個(gè)問(wèn)題?還有廣告聯(lián)盟的欺詐問(wèn)題,等等。這些東西,有的還是可以通過(guò)技術(shù)手段進(jìn)行限制和計(jì)算的,你有思考過(guò)應(yīng)該使用什么樣的方法嗎?

  B)說(shuō)到水軍就不能不提垃圾郵件和垃圾短信。你有沒(méi)有想過(guò)郵件系統(tǒng)怎么過(guò)濾垃圾信息的?

  C)關(guān)于推薦功能,這必然是一個(gè)熱點(diǎn),這是軟件產(chǎn)品從 request -> response 的被動(dòng)方式到主動(dòng)方式的進(jìn)化。微博上有推薦關(guān)注者的功能,電商有推薦商品的功能,豆瓣上有推薦影片音樂(lè)書籍的功能。不同的領(lǐng)域的推薦算法各不相同,你有沒(méi)有思考過(guò),如果是你來(lái)做推薦算法的時(shí)候,你會(huì)怎么做嗎?更進(jìn)一步,推薦通常伴隨著學(xué)習(xí)和匹配,學(xué)習(xí)用戶的行為,匹配相似的東西,你想過(guò)怎么學(xué)習(xí)用戶的行為,怎么匹配相似的東西了嗎?

  D)關(guān)于微博,某名人有幾千萬(wàn)的粉絲,當(dāng)這個(gè)名人發(fā)一個(gè)微博的時(shí)候,需要通知這幾千萬(wàn)個(gè)粉絲,這個(gè)在系統(tǒng)架構(gòu)上應(yīng)該怎么做?如果某天這個(gè)名人與人發(fā)生口角,和人吵架,拼命的刷微博,那么,系統(tǒng)架構(gòu)要怎么設(shè)計(jì)才能支持這樣的事呢?

  E)想想火車票的分段賣票的方式,現(xiàn)有的解決方案是為每個(gè)站點(diǎn)預(yù)留票,于是我們可以看到火車始發(fā)時(shí),有很多空坐,這些空坐都是留給下一個(gè)站點(diǎn)的,我們能否開(kāi)發(fā)出一個(gè)系統(tǒng)來(lái),可以把一條線上的這些這站上那站下的旅客統(tǒng)籌規(guī)劃一下,制定出一個(gè)最經(jīng)濟(jì)的方式,讓火車運(yùn)行得更有效。

  F)對(duì)于地鐵公交網(wǎng)絡(luò),我們希望這個(gè)網(wǎng)絡(luò)既能有更多的覆蓋,又能節(jié)省路線,你能不能設(shè)計(jì)出一個(gè)系統(tǒng),當(dāng)我們輸入一些數(shù)據(jù)(如:站點(diǎn),是否終點(diǎn)或起點(diǎn)站,該站的下一站可能方向(多個(gè)),該站是以上車為主,還是下車為主,等等),你的系統(tǒng)能自動(dòng)安排出各種線路嗎?

  這樣的問(wèn)題實(shí)在是太多了,都是可以讓我們?nèi)ニ伎嫉模⒉灰欢ㄓ薪?jīng)濟(jì)效益,但是至少可以讓你鍛煉一下怎么去分析問(wèn)題,怎么去思考,怎么去解決問(wèn)題

  總結(jié)

  綜上所述,我想說(shuō)的是:

  1) 只要你想,挑戰(zhàn)是無(wú)處不在的。那怕是你現(xiàn)有的覺(jué)得無(wú)聊的東西,只要你想做到極致,那怕是一個(gè)簡(jiǎn)單的功能(比如用戶登錄的功能)也會(huì)讓你充滿挑戰(zhàn)。

  2)觀察身邊的事物,去思考,去調(diào)查,舉一反三,這才是你成長(zhǎng)的源泉。不要把你的成長(zhǎng)推給客觀原因。

  3)我的軟件開(kāi)發(fā)的三重門中說(shuō)過(guò),第三重門是解決實(shí)際問(wèn)題,讓你的業(yè)務(wù)處理更為的智能,更為地強(qiáng)大。我不知道為什么這一兩年,我們的圈子里所有的人都在關(guān)注著“云”,“海量數(shù)據(jù)處理”,“高性能架構(gòu)”這樣的東西,尤其是那些性能調(diào)的高性能的東西并不很難,而這些更為實(shí)際問(wèn)題更有挑戰(zhàn)性,也更有前景。

it知識(shí)庫(kù)程序員:挑戰(zhàn)無(wú)處不在,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 长岛县| 固原市| 咸丰县| 五原县| 富锦市| 宁城县| 连云港市| 云阳县| 濉溪县| 新邵县| 南通市| 兴城市| 山东省| 土默特右旗| 大新县| 东至县| 兴业县| 鄂尔多斯市| 米泉市| 进贤县| 磴口县| 建德市| 安吉县| 治县。| 青田县| 应城市| 星子县| 北安市| 静乐县| 西贡区| 灌南县| 壤塘县| 明光市| 海安县| 平利县| 塔河县| 高唐县| 三台县| 广宗县| 绍兴市| 定西市|