普通公司员工的编程水平与阿里巴巴有多大差距?

张梅茜


虽然没有去过大厂,但还是想强答一下,毕竟有不少认识的朋友在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


我没去过大公司,所以不敢乱加评论,只说说自己的情况。我做嵌入式的,有看过一些大公司的代码框架确实不错。但是一旦项目开始,基本上真心顾不上。有过一个人负责一个项目的经历,大部分时间是花在排除问题上面,最怕的是硬件问题。因为你会明白,你有时候是硬件工程师,有时候是驱动工程师,有时候是软件工程师。有时候因为电路板换了块电源芯片,导致了电感与开发板有些差异。程序跑着跑着,系统就挂了。一开始以为是哪里内存泄露,经过一层层排查,头发不知道掉了多少根,才发现,是硬件问题!有时候真的很想能安心的只敲代码,把代码整的跟艺术品一样。但是,真没那时间。这就是小公司


分享到:


相關文章: