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

張梅茜


雖然沒有去過大廠,但還是想強答一下,畢竟有不少認識的朋友在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的要求有差距麼?

反正我覺得自己想要面試通過是有些困難,很多框架新版本的特性都沒有了解過,看來年前還得抽時間學些一下了。


希望我的回答,能夠幫助到你!我將持續分享Java開發、架構設計、職業發展等方面的見解,希望能得到你的關注;另外,關注我後可私信【架構】、【大數據】、【面試】、【優化】等關鍵字,獲取相關資料。


會點代碼的大叔


作為一個編程十幾年的老程序員,雖然沒有進過阿里巴巴,中間換工作時候也拒絕過百度和騰訊的offer,選擇了一個更適合自己的互聯網公司,編程水平主要決定因素還是和本人基本功有著極大的環境,前幾天回答了一個大公司和小公司編碼水平誰高誰低的問題,有外在因素影響但主要還是自身,自己沒有決心提升自己的編碼水平,外界環境再好也沒多大意義。

像阿里巴巴這種大公司由於職位安排的比較飽滿,正常來講代碼的提交都需要leader的審核通過,在一定程度上能極大的提高代碼的質量,在審核機制上會更加嚴格,並且在測試把關上也會更加嚴格,普通的小公司在人員配置上可能稍微少一些,會在把關上差一點,嚴格規範的制度在一定程度上能促進程序員更深層的改進,但本質上還是自身想不想讓自己變得更加優秀,願意不願意讓自己提升的更加快速。

其實提到阿里巴巴這種大公司主要還是人心態問題,覺得大公司一定要比小公司規範,換做經歷過大公司的人,還想著在裡面自己只是一個螺絲釘,還想著去小型公司讓自己發揮的更加徹底,小公司的人又嚮往著大公司的待遇以及規範。如同沒有結婚的人,總想著走進圍城,進入的人又羨慕沒有結婚的多自由,其實來來回回也就那回事。

曾經也是為了進入大公司捨棄了一箇中型公司部門技術經理的職位,現在想象其實很不值當,進入一個成熟的大公司,自己做出的貢獻只是滄海一粟,想要向上走特別難,而真正的機會還是在創業公司或者中小型公司,當然這些東西需要親身體驗才能感受到,在年輕氣盛階段很難體味到,就是覺得自己所做的選擇是對的,實踐辨真知。

希望能幫到你。


大學生編程指南


我在京東兩年,感受頗深

第一,大業務量,大用戶量,形成了大數據量,高併發,所以每天除了考慮如何實現複雜的業務的時候,也要考慮如何讓代碼最優,高併發,大數據量情況下解決方案

第二,身邊都是志同道合的人,或者高手如雲,大家都為了做到最好,互相幫助,互相提升,分享,一起分析問題,思考最優的解決方案,也有大牛可問

第三,對底層需要更高的認識,如果你使用git,再普通公司可能用個圖形界面,但在大廠,得明白rebase 的原理,而且常用的是命令行。當然各種jvm優化,sql優化,分庫分表都得會

第四,成天的加班,必定會讓你比在別的公司工作學習時間長,真的是一年當三年


kid7157887


普通公司程序員的編程水平就一定比阿里巴巴程序員差?這太絕對!我在阿里、普通公司都從事過程序員工作,從以下三個方面進行詳解,供小夥伴們參考:

一、公司規模不完全決定編程水平

一刀切的對比太主觀粗暴,就單個程序員的編碼水平來說,普通公司程序員與阿里程序員可能根本沒啥區別。普通公司也會嚴格按規範、流程編程,同樣可能有大牛帶著做項目,經過自身學習再加努力實踐,普通公司程序員的水平並不能說就比阿里的程序員差。當然了,阿里在面試程序員過程中經過了嚴格挑選把關,這些程序員的基礎都是不錯的,但真正要達到一定水平,除了環境還得靠自己進入阿里之後不斷努力。另外,眾所週期,阿里巴巴社招的程序員有相當一部分也來源於普通公司。

二、在不同規模的公司工作,到底差異在哪兒?

1、阿里巴巴晉級與薪酬制度已經相當完善了,有一套成熟的激勵體系,勤奮好學、善於溝通、技術實力強的程序員能夠在阿里得到更多的成長機會;

2、對在阿里巴巴這樣公司的程序員來說,比較幸運的是可能有機會參與大型互聯網軟件的開發,比如像架構設計、場景設計等,這對技術能力的提高比較大;

3、在阿里巴巴工作的程序員,有機會接觸前沿技術,向上有更廣袤的成長空間,在選擇下一站時有阿里工作經歷背書(俗稱鍍金),這無疑會讓在以後的職業發展道路上會擁有更多選擇。

文末福利:BAT架構師原創分享《大型網站架構之高併發設計36期資料合集》送給大家,私信發送這三個字【高併發】即可獲取哦!

覺得不錯點贊支持,小夥伴們如有不同見解,歡迎評論交流~


優知學院


單純從技術上來說,大公司是小公司沒法比的,

大公司系統要更加複雜,研究的東西更加深入。

比如高併發,大數據,

小公司沒有那麼大流量和數據量根本沒辦法研究,

大公司一個系統N臺機器,

為了節省資源就要研究怎麼使機器能力最大化,優化代碼,優化邏輯。

小公司可能一兩臺機器就能支撐一個系統,只要沒bug就能正常運行。

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

個人看法,


BeginCode


大公司的程序員,在代碼專精度方面確實超過小公司程序員。他們往往在技術的某一方面鑽研頗深,在代碼實踐上做得細膩完美無可挑剔。小公司程序員在專精度上不如bat程序員,因為大環境使然,無法讓一個程序員只負責某一模塊的代碼,他們往往一個人當兩三個人用,常常遇到的複雜業務用現有框架和技術無法解決,需要自己結合多個技術框架和知識點才能解決複雜的業務。

所以都是程序員,環境和平臺造就了程序員代碼風格和側重點不同,但就工作態度和對技術的專注程度來說,大公司的程序員無疑是有更優異的條件來養成這些良好習慣的。作為程序員,一生還是應該去大廠體驗不同的企業文化和更高素質的從業人員,自身的見識和深度也會有所不同。


程序猿猩球


能力上,bat的程序員遠超小公司程序員;不要相信那些什麼小公司的程序員什麼都要做所以咋樣咋樣,大公司就只是一顆小螺絲釘,自欺欺人而已;大公司的程序員天賦就強於小公司的程序員,技術靠的是天賦+努力,天賦遠遠重要於努力,你不信那就是你傻


爪子22


大公司如bat大部分普通程序員,由於做的太專一了,基本上在某一方面做得不錯,整體能力差很遠,但是自己覺得啥都行。

這麼比喻吧,如果說把程序員比作廚師。

普通公司的程序員基本上是各個飯店的大廚,啥菜都會做。

bat是御膳房,程序員什麼大菜都見過,但基本上一個大菜也做不了。很多人就是御膳房後勤部切蔥花大隊的切蔥花手😄


北方互動劉永偉同學


在阿里三年的老人說一下。主要是能夠獲取和見識到小公司不能給你的經驗,場景和挑戰


ourstart


我沒去過大公司,所以不敢亂加評論,只說說自己的情況。我做嵌入式的,有看過一些大公司的代碼框架確實不錯。但是一旦項目開始,基本上真心顧不上。有過一個人負責一個項目的經歷,大部分時間是花在排除問題上面,最怕的是硬件問題。因為你會明白,你有時候是硬件工程師,有時候是驅動工程師,有時候是軟件工程師。有時候因為電路板換了塊電源芯片,導致了電感與開發板有些差異。程序跑著跑著,系統就掛了。一開始以為是哪裡內存洩露,經過一層層排查,頭髮不知道掉了多少根,才發現,是硬件問題!有時候真的很想能安心的只敲代碼,把代碼整的跟藝術品一樣。但是,真沒那時間。這就是小公司


分享到:


相關文章: