當前位置:編程學習大全網 - 圖片素材 - 普通公司員工的編程水平與阿裏巴巴有多大差距?

普通公司員工的編程水平與阿裏巴巴有多大差距?

作為壹個編程十幾年的老程序員,雖然沒有進過阿裏巴巴,中間換工作時候也拒絕過百度和騰訊的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就能正常運行。

非技術層面的就看公司的業務能力了。

個人看法,

  • 上一篇:爐石傳說更新速度為0
  • 下一篇:香港飛英國要多久?
  • copyright 2024編程學習大全網