阿里編程
❶ 阿里巴巴的程序員技術是不是都很牛
你好,在例如阿里巴巴這樣的bat互聯網大廠的程序員,做到架構師的職級一般都可以到年薪百萬,具體如下。
1、阿里工程師崗位職級
阿里巴巴集團採用雙序列職業發展體系:
一套體系是專家路線【P序列=技術崗】,程序員、工程師,某一個專業領域的人才,一共分為14級,從P1到P14,目前校招最低從P4開始。
一套體系是M路線,即管理者路線【M序列=管理崗】,從M1到M10。
阿里P8架構師作為阿里的「IT架構靈魂人物」的角色,他們不僅做著架構師的本職工作,還同時做程序開發,寫核心代碼的工作。另外,架構師依舊是技術高手,編程能力依然是一流的。
但根據當前的市場需求,互聯網大廠們對於普通java開發人才需求逐年銳減,而對互聯網架構師人才的需求招聘量已經上升到50%,因此薪資更是不可同日而語。
對於想學習互聯網架構師的同學來說,北大青鳥、課工場等優秀品牌都是不錯的選擇。課程根據招聘需求制定,包含全部分布式微服務技術,對標阿里P8級別架構師。
希望我的回答對你有所幫助!
❷ 阿里巴巴編程之夏很難入選嗎
是的。阿里巴巴編程之夏(AlibabaSummerofCode,簡稱ASoC)是面向全球18歲及以上本科、碩士、博士高校學生的編程普惠計劃,很難入選。鼓勵高校學生深度參與開源開發活動,以第一視角感受開源世界的魅力,成為開源社區新鮮「血液」。
❸ 剛剛,阿里開源 iOS 協程開發框架 coobjc!
阿里妹導讀:剛剛,阿里巴巴正式對外開源了基於 Apache 2.0 協議的協程開發框架 coobjc,開發者們可以在 Github 上自主下載。
coobjc是為iOS平台打造的開源協程開發框架,支持Objective-C和Swift,同時提供了cokit庫為Foundation和UIKit中的部分API提供了 協程 化支持,本文將為大家詳細介紹coobjc的設計理念及核心優勢。
從2008年第一個iOS版本發布至今的11年時間里,iOS的非同步編程方式發展緩慢。
基於 Block 的非同步編程回調是目前 iOS 使用最廣泛的非同步編程方式,iOS 系統提供的 GCD 庫讓非同步開發變得很簡單方便,但是基於這種編程方式的缺點也有很多,主要有以下幾點:
針對多線程以及尤其引發的各種崩潰和性能問題,我們制定了很多編程規范、進行了各種新人培訓,嘗試降低問題發生的概率,但是問題依然很嚴峻,多線程引發的問題佔比並沒有明顯的下降,非同步編程本來就是很復雜的事情,單靠規范和培訓是難以從根本上解決問題的,需要有更加好的編程方式來解決。
上述問題在很多系統和語言開發中都可能會碰到,解決問題的標准方式就是使用協程,C#、Kotlin、python、Javascript 等熱門語言均支持協程極其相關語法,使用這些語言的開發者可以很方便的使用協程及相關功能進行非同步編程。
2017 年的 C++ 標准開始支持協程,Swift5 中也包含了協程相關的標准,從現在的發展趨勢看基於協程的全新的非同步編程方式,是我們解決現有非同步編程問題的有效的方式,但是蘋果基本已經不會升級 Objective-C 了,因此使用Objective-C的開發者是無法使用官方的協程能力的,而最新 Swift 的發布和推廣也還需要時日,為了讓廣大iOS開發者能快速享受到協程帶來的編程方式上的改變,手機淘寶架構團隊基於長期對系統底層庫和匯編的研究,通過匯編和C語言實現了支持 Objective-C 和 Swift 協程的完美解決方案 —— coobjc。
核心能力
內置系統擴展庫
coobjc設計
最底層是協程內核,包含了棧切換的管理、協程調度器的實現、協程間通信channel的實現等。
中間層是基於協程的操作符的包裝,目前支持async/await、Generator、Actor等編程模型。
最上層是對系統庫的協程化擴展,目前基本上覆蓋了Foundation和UIKit的所有IO和耗時方法。
核心實現原理
協程的核心思想是控制調用棧的主動讓出和恢復。一般的協程實現都會提供兩個重要的操作:
我們基於線程的代碼執行時候,是沒法做出暫停操作的,我們現在要做的事情就是要代碼執行能夠暫停,還能夠再恢復。 基本上代碼執行都是一種基於調用棧的模型,所以如果我們能把當前調用棧上的狀態都保存下來,然後再能從緩存中恢復,那我們就能夠實現yield和 resume。
實現這樣操作有幾種方法呢?
上述第三種和第四種只是能過做到跳轉,但是沒法保存調用棧上的狀態,看起來基本上不能算是實現了協程,只能算做做demo,第五種除非官方支持,否則自行改寫編譯器通用性很差。而第一種方案的 ucontext 在iOS上是廢棄了的,不能使用。那麼我們使用的是第二種方案,自己用匯編模擬一下 ucontext。
模擬ucontext的核心是通過getContext和setContext實現保存和恢復調用棧。需要熟悉不同CPU架構下的調用約定(Calling Convention). 匯編實現就是要針對不同cpu實現一套,我們目前實現了 armv7、arm64、i386、x86_64,支持iPhone真機和模擬器。
說了這么多,還是看看代碼吧,我們從一個簡單的網路請求載入圖片功能來看看coobjc到底是如何使用的。
下面是最普通的網路請求的寫法:
下面是使用coobjc庫協程化改造後的代碼:
原本需要20行的代碼,通過coobjc協程化改造後,減少了一半,整個代碼邏輯和可讀性都更加好,這就是coobjc強大的能力,能把原本很復雜的非同步代碼,通過協程化改造,轉變成邏輯簡潔的順序調用。
coobjc還有很多其他強大的能力,本文對於coobjc的實際使用就不過多介紹了,感興趣的朋友可以去官方github倉庫自行下載查看。
我們在iPhone7 iOS11.4.1的設備上使用協程和傳統多線程方式分別模擬高並發讀取數據的場景,下面是兩種方式得到的壓測數據。
從上面的表格我們可以看到使用在並發量很小的場景,由於多線程可以完全使用設備的計算核心,因此coobjc總耗時要比傳統多線程略高,但是由於整體耗時都很小,因此差異並不明顯,但是隨著並發量的增大,coobjc的優勢開始逐漸體現出來,當並發量超過1000以後,傳統多線程開始出現線程分配異常,而導致很多並發任務並沒有執行,因此在上表中顯示的是大於20秒,實際是任務已經無法正常執行了,但是coobjc仍然可以正常運行。
我們在手機淘寶這種超級App中嘗試了協程化改造,針對部分性能差的頁面,我們發現在滑動過程中存在很多主線程IO調用、數據解析,導致幀率下降嚴重,通過引入coobjc,在不改變原有業務代碼的基礎上,通過全局hook部分IO、數據解析方法,即可讓原來在主線程中同步執行的IO方法非同步執行,並且不影響原有的業務邏輯,通過測試驗證,這樣的改造在低端機(iPhone6及以下的機器)上的幀率有20%左右的提升。
簡明
易用
清晰
性能
程序是寫來給人讀的,只會偶爾讓機器執行一下。——Abelson and Sussman
基於協程實現的編程範式能夠幫助開發者編寫出更加優美、健壯、可讀性更強的代碼。
協程可以幫助我們在編寫並發代碼的過程中減少線程和鎖的使用,提升應用的性能和穩定性。
本文作者:淘寶技術
❹ 馬雲會編程嗎
問題一:馬雲會編程嗎 據馬雲本人講,他在技算機方面出了會接發電子郵件和簡單的上網,其他什麼都不會。
問題二:喬布斯和馬雲這兩個人會電腦編程嗎? 比爾・蓋茨曾嘲笑過喬布斯,連程序都不會編。。。
馬雲用一個美麗的構想籠絡了一幫程序高手為他編程。。。
從這點足以說明,技術重要,思想更重要!技術是死的,思想是活的。。。這個世界有太多的技術人才,程序天才;但喬布斯,馬雲這類人太少了。。。
問題三:馬雲不懂網路方面和電腦編程為什麼還能成功,求解答,謝謝大家! 因為馬雲會管理人才
問題四:馬雲是工程師嗎?好像他不會編程,如何搞的淘寶網 有錢什麼都能辦得到,他什麼都不會但是他會管理,會籠絡人心,你看看楚漢傳奇就知道啦,劉邦打仗不如韓信,智謀不如陳平,但是他卻建立漢朝了,mychairshome!
問題五:馬雲不會編程為什麼可以創建淘寶?找別人給他做難道不怕竊取商業機密?怎麼做到的?? 巨額保密合同是幹嘛的?竊取了商業機密沒任何損失,那要法院和律師幹嘛
問題六:馬雲修的是英語,為什麼又會創業學編程? 你確定他會編程?
問題七:馬雲是程序員嗎 馬雲當了6年半的英語老師,期間他成立了杭州首家外文翻譯社。在西雅圖,對計算機一竅不通的馬雲第一次上了互聯網。剛剛學會上網,他想到了為他的翻譯社做網上廣告。
馬雲應該沒做過程序員。
問題八:馬雲當初不懂編程。他是怎樣創建中國黃頁的? 其實想做什麼,不一定會,而是他可以請一些技術人員。
問題九:喬布斯和馬雲這兩個人都會電腦編程嗎? 馬雲創業的時候一點技術都不會,一點資金都沒有!拉了1戶個人每日每夜的寫,終於寫出來了!喬布斯會一些,最早是他自己創辦公司,然後有離開了,但後來又回來了,就出來手機。
問題十:在阿里發展之初馬雲都做些什麼?他編程吧?他大學是什麼專業的?學過計算機技術嗎? 馬雲大學是學財會的,也沒有聽說他接觸編程,阿里並不是靠他一個人做出來的,可能他只不過是人緣好,又有想法,把各種人才召集起來 大家共同完成的。
❺ 看完阿里程序員做JVM調優,讓我明白12K和40K的差距在哪
怎樣才能做好性能調優?
關於性能調優,我先來說說的我的感受。Java性能調優不像是學一門編程語言,無法通過直線式的思維來掌握和應用,它對於工程師的技術廣度和深度都有著較高的要求。
互聯網時代,一個簡單的系統就囊括了應用程序、資料庫、容器、操作系統、網路等技術,線上一旦出現性能問題,就可能要你協調多方面組件去進行優化,這就是技術廣度;而很多性能問題呢,又隱藏得很深,可能因為一個小小的代碼,也可能因為線程池的類型選擇錯誤..可歸根結底考驗的還是我們對這項技術的了解程度,這就是技術深度。
顯然,性能調優不是一件容易的事。但有沒有什麼方法能把這件事情做好呢?
在這篇文章里,將從實戰出發,精選高頻性能問題,透過 Java 底層源碼,提煉出優化思 路和它背後的實現原理,最後形成一套「學完就能用的調優方法論」。這也是很多一線大廠 對於高級工程師的要求,希望通過這個文章幫助你快速進階。
Java調優
性能調優策略圖
設計調優
JVM調優
多線程調優
資料庫調優
Java程序優化
並行程序開發及優化
Java性能調優工具
實戰演練場
最後
這篇文章適合所有Java程序員、軟體設計師、架構師以及軟體開發愛好者,對於在一定經驗的java工程師,更能幫助突破技術瓶頸,深入Java內核開發!
希望本文能夠在工作中對讀者有所幫助。
❻ 為什麼阿里工程師代碼寫的好看看他的代碼規范就知道了
曾經與一位從阿里出來的Java工程師一起工作過一段時間,他的技術說不上非常厲害, 但是,他的代碼寫的的非常好,凡是他做的功能很少出現Bug 。我就很好奇,於是經常向他請教一些代碼設計的原則,然後他告訴了我阿里Java手冊。並且,他將這個手冊進行了修改,也成為了我司Java程序員的開發手冊。 這篇文章就讓我們看一看這個手冊中比較重要的原則。
【強制】 代碼中的命名均不能以下劃線或美元符號開始,也不能以下劃線或美元符號結束。
反例:_name / __name / $name / name_ / name$ / name__
【強制】 類型與中括弧緊挨相連來表示數組。
正例:定義整形數組 int[] arrayDemo; 反例:在 main 參數中,使用 String args[]來定義。
【強制】 POJO 類中布爾類型變數都不要加 is 前綴,否則部分框架解析會引起序列化錯誤。
說明:表達是與否的值採用 is_xxx 的命名方式,所以,需要在 設置從 is_xxx 到 xxx 的映射關系。
反例:定義為基本數據類型 Boolean isDeleted 的屬性,它的方法也是 isDeleted(), RPC 框架在反向解 析的時候,「誤以為」對應的屬性名稱是 deleted,導致屬性獲取不到,進而拋出異常。
【推薦】 在常量與變數的命名時,表示類型的名詞放在詞尾,以提升辨識度。
【推薦】 介面類中的方法和屬性不要加任何修飾符號(public 也不要加),保持代碼的簡潔 性,並加上有效的 Javadoc 注釋。盡量不要在介面里定義變數,如果一定要定義變數,肯定 是與介面方法相關,並且是整個應用的基礎常量。
正例:介面方法簽名 void commit();
介面基礎常量 String COMPANY = "alibaba";
反例:介面方法定義 public abstract void f();
說明:JDK8 中介面允許有默認實現,那麼這個 default 方法,是對所有實現類都有價值的默認實現。
【參考】 枚舉類名帶上 Enum 後綴,枚舉成員名稱需要全大寫,單詞間用下劃線隔開。
說明:枚舉其實就是特殊的類,域成員均為常量,且構造方法被默認強制是私有。
正例:枚舉名字為 ProcessStatusEnum 的成員名稱:SUCCESS / UNKNOWN_REASON。
【參考】 各層命名規約:
1) 獲取單個對象的方法用 get 做前綴。
2) 獲取多個對象的方法用 list 做前綴,復數形式結尾如:listObjects。 3) 獲取統計值的方法用 count 做前綴。
4) 插入的方法用 save/insert 做前綴。
5) 刪除的方法用 remove/delete 做前綴。
6) 修改的方法用 update 做前綴。
1) 數據對象:xxxDO,xxx 即為數據表名。
2) 數據傳輸對象:xxxDTO,xxx 為業務領域相關的名稱。
3) 展示對象:xxxVO,xxx 一般為網頁名稱。
4) POJO 是 DO/DTO/BO/VO 的統稱,禁止命名成 xxxPOJO。
【強制】 不允許任何魔法值(即未經預先定義的常量)直接出現在代碼中。
【強制】 避免通過一個類的對象引用訪問此類的靜態變數或靜態方法,無謂增加編譯器解析 成本,直接用類名來訪問即可。
【強制】 相同參數類型,相同業務含義,才可以使用Java的可變參數,避免使用Object。
說明:可變參數必須放置在參數列表的最後。(提倡同學們盡量不用可變參數編程)
【強制】 所有整型包裝類對象之間值的比較,全部使用equals方法比較。
說明:對於 Integer var = ? 在-128 至 127 范圍內的賦值,Integer 對象是在 IntegerCache.cache 產 生,會復用已有對象,這個區間內的 Integer 值可以直接使用==進行判斷,但是這個區間之外的所有數 據,都會在堆上產生,並不會復用已有對象,這是一個大坑,推薦使用 equals 方法進行判斷。
關於基本數據類型與包裝數據類型的使用標准如下:
說明: POJO 類屬性沒有初值是提醒使用者在需要使用時,必須自己顯式地進行賦值 ,任何 NPE 問題,或 者入庫檢查,都由使用者來保證。
正例:資料庫的查詢結果可能是 null,因為自動拆箱,用基本數據類型接收有 NPE 風險。
反例: 比如顯示成交總額漲跌情況,即正負 x%,x 為基本數據類型,調用的 RPC 服務,調用不成功時, 返回的是默認值,頁面顯示為 0%,這是不合理的,應該顯示成中劃線 。所以包裝數據類型的 null 值,能 夠表示額外的信息,如:遠程調用失敗,異常退出。
【強制】 POJO 類必須寫 toString 方法。
使用 IDE 中的工具:source> generate toString 時,如果繼承了另一個 POJO 類,注意在前面加一下 super.toString。
說明: 在方法執行拋出異常時,可以直接調用 POJO 的 toString()方法列印其屬性值,便於排查問題。
【強制】 關於hashCode和equals的處理,遵循如下規則:
說明:String 已覆寫 hashCode 和 equals 方法,所以我們可以愉快地使用 String 對象作為 key 來使用。
【強制】 線程資源必須通過線程池提供,不允許在應用中自行顯式創建線程。
說明:線程池的好處是減少在創建和銷毀線程上所消耗的時間以及系統資源的開銷,解決資源不足的問 題。 如果不使用線程池,有可能造成系統創建大量同類線程而導致消耗完內存或者「過度切換」的問題。
【強制】 線程池不允許使用Executors去創建,而是通過ThreadPoolExecutor的方式,這樣的處理方式讓寫的同學更加明確線程池的運行規則,規避資源耗盡的風險。
以上規范在設計代碼中,是比較重要的原則。如果編寫代碼的過程中,可以依照以上原則,那代碼的可讀性和可維護性將大大提升
❼ 普通公司員工的編程水平與阿里巴巴有多大差距
作為一個編程十幾年的老程序員,雖然沒有進過阿里巴巴,中間換工作時候也拒絕過網路和騰訊的offer,選擇了一個更適合自己的互聯網公司,編程水平主要決定因素還是和本人基本功有著極大的環境,前幾天回答了一個大公司和小公司編碼水平誰高誰低的問題,有外在因素影響但主要還是自身,自己沒有決心提升自己的編碼水平,外界環境再好也沒多大意義。
像阿里巴巴這種大公司由於職位安排的比較飽滿,正常來講代碼的提交都需要leader的審核通過,在一定程度上能極大的提高代碼的質量,在審核機制上會更加嚴格,並且在測試把關上也會更加嚴格,普通的小公司在人員配置上可能稍微少一些,會在把關上差一點,嚴格規范的制度在一定程度上能促進程序員更深層的改進,但本質上還是自身想不想讓自己變得更加優秀,願意不願意讓自己提升的更加快速。
其實提到阿里巴巴這種大公司主要還是人心態問題,覺得大公司一定要比小公司規范,換做經歷過大公司的人,還想著在裡面自己只是一個螺絲釘,還想著去小型公司讓自己發揮的更加徹底,小公司的人又嚮往著大公司的待遇以及規范。如同沒有結婚的人,總想著走進圍城,進入的人又羨慕沒有結婚的多自由,其實來來回回也就那回事。
曾經也是為了進入大公司舍棄了一個中型公司部門技術經理的職位,現在想像其實很不值當,進入一個成熟的大公司,自己做出的貢獻只是滄海一粟,想要向上走特別難,而真正的機會還是在創業公司或者中小型公司,當然這些東西需要親身體驗才能感受到,在年輕氣盛階段很難體味到,就是覺得自己所做的選擇是對的,實踐辨真知。
希望能幫到你。
以我自身的經歷來回答吧!我是做java開發的,在沒進阿里之前,我在外面其他公司幹了四年。頭兩年乾的最多的事情就是直接把業務翻譯成代碼,做的最多的事情就是curd。工程化以及結構化設計根本不存在的,什麼性能、可擴展性、易用性、可維護性通通不考慮。把功能實現了就可以了,活脫脫的把面向對象的語言使用成了面向過程編程。(因為大家都這樣干)主要還是因為剛畢業在這家公司做erp系統,功能可以用就不管了。接下來的兩年換了一家電商公司,這也是一個天坑,代碼跟 山差不多,我進去做庫存的,第一件事情就是熟悉了業務然後進行了重構。前面做這一塊的人都差不多走光了,模型抽象,領域分層,模塊分層一頓操作下來自我感覺良好。但是疊加了兩年的業務以後,媽的差不多也是 山了,為了業務快速迭代犧牲一些也是能理解的。然後我走了[捂臉]。
進入了阿里,我是做中台開發的。這里最喜歡乾的就是重復造輪子,幹啥都要講究高可用、可復用、可擴展、可維護、可讀性……寫代碼大抵是這樣的一個介面進去寫介面一般先上熔斷降級開關、分布式鎖,然後就是加緩存,接著業務就用領域模型+泛化抽象模型+工廠設計模式+策略模式 這一頓操作下來後,為了支持擴展性還得定製spi擴展點提供擴展。一個業務功能的代碼完全是割裂的狀態。不過項目跟代碼的質量跟之前的公司比確實上升不少。只能說環境的影響很大吧
雖然沒有去過大廠,但還是想強答一下,畢竟有不少認識的朋友在BAT工作或工作過。
我的看法是:BAT的牛人多,普通人也多,雖然他們不是每個人都能達到令人仰望的技術水平,但畢竟平台高,所以眼光會變得寬闊;代碼要求更為嚴格,所以普通的程序員也會被逼變得更優秀;身邊的牛人多,普通的程序員也會受到影響,提升的更快。
正好今天看到一篇文章,是講去阿里的面試經歷,也分享給大家,看看自己離著【進】阿里還有多大的差距。
Java多線程
線程池的原理,為什麼要創建線程池?
線程的生命周期,什麼時候會出現僵死進程;
什麼實現線程安全,如何實現線程安全;
創建線程池有哪幾個核心參數? 如何合理配置線程池的大小?
synchronized、volatile區別、synchronized鎖粒度、模擬死鎖場景、原子性與可見性;
JVM相關
JVM內存模型,GC機制和原理;GC分哪兩種;什麼時候會觸發Full GC?
JVM里的有幾種classloader,為什麼會有多種?
什麼是雙親委派機制?介紹一些運作過程,雙親委派模型的好處;(這個我真的不會...)
什麼情況下我們需要破壞雙親委派模型;
常見的JVM調優方法有哪些?可以具體到調整哪個參數,調成什麼值?
JVM虛擬機內存劃分、類載入器、垃圾收集演算法、垃圾收集器、class文件結構是如何解析的;
Java擴展
紅黑樹的實現原理和應用場景;
NIO是什麼?適用於何種場景?
Java9比Java8改進了什麼;
HashMap內部的數據結構是什麼?底層是怎麼實現的?
說說反射的用途及實現,反射是不是很慢,我們在項目中是否要避免使用反射;
說說自定義註解的場景及實現;
List和Map區別,Arraylist與LinkedList區別,ArrayList與Vector 區別;
Spring
Spring AOP的實現原理和場景;(應用場景很重要)
Spring bean的作用域和生命周期;
Spring Boot比Spring做了哪些改進? Spring 5比Spring4做了哪些改進;(慚愧呀,我們還在用Spring4,高版本的沒關心過)
Spring IOC是什麼?優點是什麼?
SpringMVC、動態代理、反射、AOP原理、事務隔離級別;
中間件
Dubbo完整的一次調用鏈路介紹;
Dubbo支持幾種負載均衡策略?
Dubbo Provider服務提供者要控制執行並發請求上限,具體怎麼做?
Dubbo啟動的時候支持幾種配置方式?
了解幾種消息中間件產品?各產品的優缺點介紹;
消息中間件如何保證消息的一致性和如何進行消息的重試機制?
Spring Cloud熔斷機制介紹;
Spring Cloud對比下Dubbo,什麼場景下該使用Spring Cloud?
資料庫篇
鎖機制介紹:行鎖、表鎖、排他鎖、共享鎖;
樂觀鎖的業務場景及實現方式;
事務介紹,分布式事物的理解,常見的解決方案有哪些,什麼事兩階段提交、三階段提交;
MySQL記錄binlog的方式主要包括三種模式?每種模式的優缺點是什麼?
MySQL鎖,悲觀鎖、樂觀鎖、排它鎖、共享鎖、表級鎖、行級鎖;
分布式事務的原理2階段提交,同步非同步阻塞非阻塞;
資料庫事務隔離級別,MySQL默認的隔離級別、Spring如何實現事務、
JDBC如何實現事務、嵌套事務實現、分布式事務實現;
SQL的整個解析、執行過程原理、SQL行轉列;
Redis
Redis為什麼這么快?redis採用多線程會有哪些問題?
Redis支持哪幾種數據結構;
Redis跳躍表的問題;
Redis單進程單線程的Redis如何能夠高並發?
Redis如何使用Redis實現分布式鎖?
Redis分布式鎖操作的原子性,Redis內部是如何實現的?
看完了有什麼感想,自己和BAT的要求有差距么?
反正我覺得自己想要面試通過是有些困難,很多框架新版本的特性都沒有了解過,看來年前還得抽時間學些一下了。
大公司如bat大部分普通程序員,由於做的太專一了,基本上在某一方面做得不錯,整體能力差很遠,但是自己覺得啥都行。
這么比喻吧,如果說把程序員比作廚師。
普通公司的程序員基本上是各個飯店的大廚,啥菜都會做。
bat是御膳房,程序員什麼大菜都見過,但基本上一個大菜也做不了。很多人就是御膳房後勤部切蔥花大隊的切蔥花手
普通公司員工的編程水平與阿里巴巴有多大差距?要說阿里巴巴每個程序員都牛逼得不行那也是扯淡,普通公司牛逼的程序員也不少,這本身就沒有一定的定論。
在阿里巴巴這樣公司的程序員來說,應該比較幸運的是能夠遇到大型互聯網軟體的開發,比如像架構設計、場景設計等,這對於很多程序員來說應該可以開眼界,參與其中也能鍛煉自己。同樣的,很多大型軟體公司雖然沒有阿里這樣的場景,但同樣也有自己特殊的應用設計、場景在阿里也見不到。
而對於單個程序員的編碼水平來說,普通公司與阿里的程序員可能根本就沒啥區別。普通公司里也有嚴格按規范、嚴格按流程、嚴格測試等來做軟體,進入裡面同樣可以遇到大牛帶領項目、大牛的傳幫帶等,耳聞目染再加努力實踐,這些程序員的水平並不能說就比阿里的程序員差。當然,阿里這樣的名氣不外乎就是進入時經過了嚴格的挑選,這些程序員的基礎都是不錯的,但真正要有水平,那還得除了環境也得要靠自己努力。
但大公司程序員與小公司的程序員還是有一些差異的。小公司人員可能接觸的項目基本不大,而像萬金油那樣啥都接觸到一些能搞一些,但深度卻不夠。比如小公司的程序員今天搞Java編碼,可能下個項目就去搞PHP,再下個項目又去搞python等,今天是程序,每隔兩個月可能又是下個項目的設計者、Leader等有可能。但恰恰在某一項編碼上卻又不像某些大公司的程序員那樣一個蘿卜一個坑兒,又專又精。
另外小公司的開發流程及規范都不夠,有些甚至是只要搞出來能運行就可以,所以章法上不像大公司一樣規范。甚至有些都沒有嚴格的測試就到客戶那裡去上線,讓客戶去當小白鼠,做一個敗一個。
所以作為程序員最好是能開始到大公司去學習鍛煉規范的軟體開發那是很有益的。至於是不是阿里倒不一定,能進入阿里當然好。而說到編碼水平,絕大部分還是要靠自己的努力,特別是培養思維能力、基礎知識、見多識廣、多加實踐與交流,對自己編碼能力提升是必不可少的。天賦程序員確實有,但絕大部分程序員要說天賦都談不上,大部分也就是上面幾項用了更多的時間吧。
能力上,bat的程序員遠超小公司程序員;不要相信那些什麼小公司的程序員什麼都要做所以咋樣咋樣,大公司就只是一顆小螺絲釘,自欺欺人而已;大公司的程序員天賦就強於小公司的程序員,技術靠的是天賦+努力,天賦遠遠重要於努力,你不信那就是你傻
在阿里三年的老人說一下。主要是能夠獲取和見識到小公司不能給你的經驗,場景和挑戰
說到電腦的編程,對於學計算機的人來說真的是一件非常頭疼的事情,每天的編程工作都要面對各種各樣的字母,各種各樣的特殊符號,一般人看見也就只能一懵一懵的。每個程序員之間也都是有技術好技術低的,並且程序員在選擇公司的時候也面臨很大的困難。
現在 社會 上找工作的人都有一個普遍的現象,在小公司工作的人都想去大公司,在大公司工作的人想去中小企業工作。每個程序員都想得到一個展現自己的機會,讓自己所學的知識有所用武之地。能力較強的程序員就去了大公司,能力有點差異的就去了中小企業,但是這兩者在各自公司的發展並不一樣。
在中小企業工作程序員有可能會在公司有更大的發展空間,在大企業裡面有著許多優秀的程序員,就像是阿里巴巴,有可能在這個團隊裡面自己的能力不能跟好的發揮。有一點要清楚,技術高的人在一起會越來越優秀,他們各自有各自的特點,都會互相學習互相進步,前進的動力也大。普通公司的程序員自我提升的空間較小,沒有像阿里巴巴這樣的公司程序員水平高。
大企業對程序員的要求也很高,這些程序員所要面對的困難也非常大,逼迫著自己去提升自身的能力,如果兩個技術相匹配的程序員一個去普通企業,一個去阿里巴巴這樣的大公司,在工作一段時間後,在阿里巴巴工作的程序員要遠遠超過普通公司的程序員。雖然大公司的程序員想去中小公司,但是對他們更是一種較大的損失。
更多優質內容,請持續關注鎂客網~~
大公司的程序員,在代碼專精度方面確實超過小公司程序員。他們往往在技術的某一方面鑽研頗深,在代碼實踐上做得細膩完美無可挑剔。小公司程序員在專精度上不如bat程序員,因為大環境使然,無法讓一個程序員只負責某一模塊的代碼,他們往往一個人當兩三個人用,常常遇到的復雜業務用現有框架和技術無法解決,需要自己結合多個技術框架和知識點才能解決復雜的業務。
所以都是程序員,環境和平台造就了程序員代碼風格和側重點不同,但就工作態度和對技術的專注程度來說,大公司的程序員無疑是有更優異的條件來養成這些良好習慣的。作為程序員,一生還是應該去大廠體驗不同的企業文化和更高素質的從業人員,自身的見識和深度也會有所不同。
單純從技術上來說,大公司是小公司沒法比的,
大公司系統要更加復雜,研究的東西更加深入。
比如高並發,大數據,
小公司沒有那麼大流量和數據量根本沒辦法研究,
大公司一個系統N台機器,
為了節省資源就要研究怎麼使機器能力最大化,優化代碼,優化邏輯。
小公司可能一兩台機器就能支撐一個系統,只要沒bug就能正常運行。
非技術層面的就看公司的業務能力了。
個人看法,
❽ 阿里巴巴編程之夏很難入選嗎
阿里巴巴編程之夏很難入選。該項目面向全球學生,競爭壓力非常大,共有三次評估,因為以上原因導致十分難入選。阿里巴巴編程之夏是一個全球性計劃,通過這個計劃,學生可以直接參與開源軟體開發,在導師的指導下,深度體驗真實世界的軟體開發,感受開源技術共建的魅力。