导航:首页 > 软件知识 > 程序员如何测试阿里

程序员如何测试阿里

发布时间:2023-05-22 11:46:03

⑴ 如何辨别一个程序员水平的高低

1.自己介绍项目,看对项目的提炼总结能力(也是抽象能力);
2.自己印象最深的bug,可以知道大概技术深度;
3.设计模式提问,看有没有学习方法;
4.语法基础问题,多线,分布,安全等问题,看知识面广度;
5.智力问题,看反应能力,分析问题思路等
上述五步基本可知是否是一个好程序猿

计科专业从事软件开发十几年了,主要在浏览器内核领域研究的比较多,最近在研究服务器后台方向,辨别程序员水平高低主要看做出了什么产品,如同现在的程序员主要是项目经验,简历上写的一堆项目经验都是面试的时候主要提及的问题。经常在面试中会问两个关键点:一个是做过什么项目;一个是在项目组中承担什么职务,毕竟参与过和做的多少程度是不一样的,这些都是可以通过一些具体的细节检测出来,问题越具体越是容易看出水准,具体的东西不是能够编造出来的。

有很多技术公司直接不通过笔试,仅仅通过简单的面试就确定工资水准了,最简单的测试程序员水平的直接用笔试的方式,笔试可以把一些细节量化,尽量的细节化也是能测试出程序员基本功的,但这种基本用来测试初级程序员的,很多高级的程序员看到有笔试直接就抬腿走人了,因为有些程序员在一个方向做的时间太长了,很多基本功都忘得差不多了,所以笔试可能不过关,现实中很多程序员笔试不过关,面试还可以,也一样可以做项目说的就是这类人,起码这算是非常优秀的程序员。

有很多公司采用谷歌的方式,直接采用上机写代码的方式检验程序员水平,这种方式比较直接,但在现实中可能消耗的时间以及面试官的精力,目前只有极少数的公司用这种方式,国外的公司用这种方式比较多,这种看基本功非常有效。通过代码可以看到编码习惯以及算法的设计上,都能直接看的出来。

普通的程序员直接看项目的经验,高级的直接看做过的产品,特别是产品主要设计人员,这就是程序员内心的自豪感,毕竟作为一个程序员起码要有自己设计开发的产品,也算是不白做一个程序员,在程序员的职业经历中如果能经历过一个产品从开始设计的初稿到最后推向市场,如果是完整的经历,将是一种巨大的财富,只要经历过一次都会对产品设计有一个比较层次的认识,这种能力需要靠直接的面试语言表达来展示出来,谈下对产品的认识以及产品稳定性性能等方面的总结,能到这个层面起码是高级软件工程师的级别。

当然有些程序员内在的东西不是靠语言或者写代码看出来的,因为一个优秀的程序员不仅仅是代码能力以及框架能力,还有几个非常重要的能力

程序员的能力表面是可以直接展示出来,但很多内在需要是需要时间的磨合才能了解,人就才能见人心,而且很多优秀的程序员是培养出来的,能够长时间在一起的队友都是时间长了磨练出来的。

希望能够帮到你。

自认为不是一个好的面试官,因为我认为在这么短的时间内,准确地衡量出来程序员水平的高低是有比较大的难度的,并且我有多次看走眼的时候,面试的时候觉得能力还不错,但是入职工作了一段时间之后,编程能力不忍直视。

工作之后接触一段时间,我会从这么几个方面观察他们,以判断技术能力的高低和发展潜力。


能不能出活儿、能不能debug

能不能把开发任务按时按质量地完成,当然是最主要的衡量标准了:

解决问题的方法

在开发过程中,难免会遇到没有见过的问题,有些程序员遇到问题无从下手,而优秀的程序员,自有一套解决问题的方法。

分析问题、流程设计的思路

有人会认为,程序员的主要工作就是敲代码,上班大部分时候都是在敲代码,其实并不是这样:

总结问题和改进问题的能力

好的程序员,相同的问题不会犯第二次,差的程序员,总会在一个问题上栽跟头:

我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。

不请自来,一介码农路过,留下些看法。

程序员主要是有四种综合能力,也就是debug 能力、 performance分析、 保护性编程和 投入产出比。

仅仅独立完成日后必然成高手?

在这里不能说一棒子打死,至少对于很多人来说,能独立完成是没什么问题的,有的是因为对业务熟悉,有的是真的基础扎实。但怎么说呢,程序员和浏览器打交道是最多的,现在这个互联网时代,遇到的大部分问题网络都是可以解决的,也就是普通程序员 + 网络 = 超级程序员。 但很多人也没明白具体的原理,甚至都是这个项目抄抄那个项目抄抄的,久而久之虽然解决了平时的业务,但进步的空间却很少,甚至止步不前,写出来的代码也可能存在很多坑,所以,仅仅能独立完成任务的话,离高手还有比较远的一段距离。

如何辨别高手程序员?

也就是结合我们一开始列举的那四个能力进行判断。不同级别的程序员,在那综合能力面前,强弱也是不同的。例如在奔溃的或者其他性能调优问题上,即使是面对大量复杂的代码,在信息不全的时候也会一步步的分析,抽丝剥茧缩小范围,最终定位根本原因

,并且最终给出一个好的方案。

如何成为高手程序员?

当然还有看他摘了帽子是否秃顶这样的笑话,就再不赘述了。

第一阶段(黄金):会用编程语言实现需求,比如现在的业务系统,都会找一些会搬代码的人来拼工作量,也就是能自己独立基于搭好的框架实现crud常规操作。

第二阶段(铂金):除了crud,还会有一些自己踩过坑的经验,知道如何处理一些常见问题,或者可以基于搜索引擎快速解决一些异常情况。

第三阶段(钻石):能解决一些疑难杂症和会通过debug部分源码类库查看到这些疑难杂症是如何引发的,并通过编码解决这些问题,还能进行一些局部的性能优化,类似某个系统接口缓慢可以单独去优化。

第四阶段(星耀):会基于整个系统进行设计和规划,根据业务特性选择合适的框架,从源头控制开发遇到问题的频率,可以自主的搭建框架并完善机制,了解各个组件工作原理。

第五阶段(王者):小说里面总是说练武功的永远比不过创造武功的,同样的道理,用框架的也往往不如写框架的,所以写框架的这类人单独分层。

第六阶段(荣耀):其实这个阶段不应该列入进来,因为这类人往往不编码的,只是给出思想;像Hadoop这种框架就是基于人家发表的一些论文(bigdata)进行编码实现的,这类人注重的是思想和算法,区块链,大数据,云计算等等概念的创造和理论的支撑是这类人提出来的,这些人才是真正影响行业走向的人。

程序员的水平高低,不是靠语言或外在表现就能看出来的,不是看他会多少技术、参加过多少项目、写了多少博客,而是看他在实际业务场景中解决问题的能力,尤其是面对一些特别复杂的问题,或在高强度、高压工作状态下解决问题的能力与态度。


技术可以通过学习掌握,但是解决问题、定位问题的能力却不是一蹴而就。大家可能会说,“解决问题的能力”这个太宽泛了吧,可以更具象化吗,有具体的测量方法吗?简单整理了以下几点供参考。


优秀的代码能力

会写出满足需求的代码,早就不是评判程序员水平的标准了。代码编写既要满足业务需求,同时还要考虑后续的软件维护,说得通俗些,既要自己爽,也要别人爽。一个优秀的程序员,会致力于写出更简单、更效率、可读性强、扩展性强的程序代码。


逻辑思维

程序员在日常工作中,需要理解各式各样的业务需求,所以这就需要程序员具备一定的逻辑思维能力。可以说,逻辑思维是程序员的灵魂,因为每一行代码都是程序员逻辑的体现。


debug能力

项目着急上线,发布时出现问题?

业务高峰时段,系统宕机了?

业务催、运营催、用户催、老板催!

各种形态的bug,各种着急的心情,背后无数支眼睛盯得内心慌慌......

这些都是一位合格程序员所需要面对的日常。不同的程序员,在解决问题的方法、效率、质量等方面,都各有千秋。一个经验丰富的程序员,能够扛住各方压力,在复杂条件下找到核心问题,通过抽丝剥茧的分析来找到产生问题的原因,并快速进行应对处理,事后及时复盘总结,减少同类问题出现的概率。


学习能力

随之互联网的发展,越来越多的人涌入程序员这个赛道,竞争日益激烈,加之新技术层出不穷,更新迭代快,程序员所使用的语言、框架、模式都会发生天翻地覆的变化。如果不主动学习,你很快就会被落伍淘汰。



沟通能力

这种其实在面试过程中能体现出来,沟通主要是技术沟通,以及和客户之间的沟通,所有技术都不是闭门造车就能搞定的,沟通能让事情推进起来更加顺畅,包括和产品经理之间的流畅的沟通也显得非常重要。程序员的能力表面是可以直接展示出来,但很多内在需要是需要时间的磨合才能了解,人就才能见人心,而且很多优秀的程序员是培养出来的,能够长时间在一起的队友都是时间长了磨练出来的。


责任心

线上出bug了,第一时间响应、处理;

团队项目进度紧张、人手紧缺,主动补位;

又或者,在项目推进过程中如果只是关心自己模块内容,对于整个项目置之不理,只守着自己的一亩三分地。

随着时间轴的拉长,你会发现,有此f技术能力不是最好的,甚至不如你的小伙伴,最后做到了技术主管或经理、甚至更高职位,这里面除了技术实力,还有一个叫“责任心”的东西。


结束语

判断一个程序员的水平高低,核心是其解决问题的能力,而解决问题的能力养成,需要扎实的底层基础来支撑,要综合其代码质量、项目经验、框架能力、逻辑思维等等多方面,不能单看某一方面。


而对于1-6岁的程序员来说,想要成为一个高级程序员,变得越来越优秀,唯有持之以恒去学习、积累、实践、修炼。



----end----


一:50岁的时候,头发还是黑色的浓密的。

二:赚到的钱能保证家人快乐的生活。

三:当公司不要你的时候能成功转型。

其他的例如编程经验、写代码厉害啊什么的根本不值一提。

这就是程序员的面试嘛 :-)

(1)是否能熟练使用所用编程语言的主要功能;

(2)是否知道用合适的数据结构解决问题;

(3)是否知道基本的算法,并且用这些算法解决问题;

(4)只看少量代码的话,从变量命名和程序结构一般能够判断是否是新手;

(5)给出具体问题,能够用程序解决,能考虑到所有的边界条件;

(6)考虑程序的可扩展性,可维护性;

再往高一点走,就需要

(7)面对模糊的问题能够分析并且找到细节和具体的需求;

(8)知道利用已有的库,架构和工具等来解决新的问题,而不是什么都自己实现;

(9)能发现并改进已有程序中的瓶颈;

(10)对整个大项目的程序架构有很清晰的了解,知道相互之间的依赖,以及知道为什么采用这样就架构;

(11)给一个大的项目,能够对整个项目的程序架构和组件进行合理的设计,考虑并行性,低延迟,大数据量等各种需求和应对方式。

带领团队已多年,项目数十个,对判别程序员水平的高低,我有自己的看法,欢迎大家一起交流。



1.代码质量。

优质的代码,首先是经得起考验。静态分析工具过一遍,无错误,无警告。当然警告部分需要人工重审,因为静态分析工具不一定完全正确。过了这一关,重要的还须过测试关,少Bug或无Bug的代码,才是好代码。优质的代码带有技术气质和艺术气质。阅读起来,有一种赏心悦目的快感,即工整美观,干净利落,又蕴含着理论常识,运用技巧,精准到位。



2.表达能力。



3.文档能力。

文档形式包括但不限于PPT,文字,图表,音视频。文档内容包括但不限于API说明,工具手册,项目事项,技术论述,陷阱总结,方案展示,指导手册。文档要求必须是满足公司或部门的规范和格式,否则五花八门的,不利于交流和传承。



以上3点,是我量化判断程序员水平的标准,仅供参考。相比水平,其实我更看重程序员的态度,执行力,时间观念,自学力等等,也是很重要的团队作战能力,也可以说是程序员水平的考量吧。

谢谢大家。

⑵ 只会写业务代码的码农,如何拿阿里的开发offer

最近公司需要招聘几个java开发工程师,2个周面试了有20多人,有个很强烈的感觉:很多有天赋的开发者,技术面试表现差强人意,问原因比较统一归结为——长期跟着公司只写业务代码,而自己没有时间扩展提高,更不知道如何提高自己。

就此说说我的看法:如何提高自己?当然你再怎么提高也不一定能拿到阿里的offer,不过至少能接近一点是一点嘛!哈哈

首先做个定性结论:要提高自己,首先要能写好业务代码!如果连业务代码都写不好,那么你别读下去了,转行,出门右转娱乐版!

写好业务代码的不一定很牛,但是连业务代码都写不好的一定好不了!

直接总结点干货吧。

1,尽可能多熟悉业务

无论是不是你的业务尽可能的都弄明白,成为专家。你懂的越多,对团队作用做大,别人越依赖你,你可以做到进可攻退可守。这是你的护城河

业务越熟悉,作出更加完美设计方案的可能性越大!

2,做端到端的专家

一个小问题:在PC浏览器里输入 toutiao.com 点回车以后,从本地浏览器到服务器再到浏览器中间发生了哪些处理?亲们,有几个人都把这个问题回答完美?我面试的时候问过很多人,有人连DNS是啥都不知道。。。。这是一个端到端的典型例子,但是细思恐极,DNS、浏览器缓存、本地host、路由、nginx反向代理、tomcat、集群、redis cache、mysql、代理、dfs、cdn。。。。,哇塞,好爽!我们做技术一定把知识做成体系化,很多人只知道springmvc的xml里面配置映射,这是远远不够的。

体系化,系统性,宏观全局性,这些是能力提高的必备!说起来也不难,用心整理即可!

3,怎样自学

如果你在一个成熟团队,恭喜你,只要你用心,通读现有架构多向别人请教,然后自己回家搞一套出来多练练就行了。

如果你有机会从头开始搭建一套,那么更加恭喜你,虽然很累很辛苦,但是只要你扛下来以后就是康庄大道。

JVM调优是啥?nginx、redis、mongoDB、neo4j、atlas、elasticsearch这些玩意是干嘛的?好吧,如果你不知道,那么恭喜你,我给你打开了一扇窗,自学去!但是我不可能天天来给你开窗,怎么办?简单啊,开源中国多逛逛啊,infoQ,ITeye这些网站收藏起来,顺便删掉你的1024嘛!时间总会有的,你也总会牛起来的。

前天有人私信我问怎么学redis?要买什么书看?我说不要买书,去qq上找找相关的群加进去,再去网络找个最简单的例子,在自己电脑上把redis装上,然后敲命令,一个新手的知识就从网络上找+群里请教就足够了,敲差不多了再结合自己的语言比如java,从网络上找例子能够通过java执行命令,剩下就是进阶,再群里多向大佬请教一下最好有业务能够结合使用一下。怎么结合spring,怎样使用高级属性,怎样做到数据一致性等等。。。。。

当然,这个例子是完全自己学,其实这是很辛苦的,更快一点的办法是借力,找懂的人帮你最快的开一个头,入了门再开始自己研究,这就是我个人一直觉得在线学习网站app是非常好工具的原因!不要在乎那点钱,先开个头再说!

4,学习——>实践——>教别人

上面的第3条适合小白,非小白呢?以JVM调优为例子,我觉得三步走:

学习,了解基本知识,该网络的网络,该头条的头条,该花钱去上在线教育网站学习的也别在乎那几百块钱,学好了能几百倍的赚回来,比投资股市和房地产都合算

实践,就是动手嘛,公司项目能有机会练习更好,没有的话自己动手吧。当然具体到JVM调优,一般看不出来效果的,你配啥参数都能跑起来,用jstat,jmap之类的也看不出来啥,那好,我们想办法跑死它!执行无限循环、做超级大对象,让它stop the world!你进行跟踪!好玩的很呢。设计各种场景,多方位多角度的跟它折腾

你以为的“学会了”,跟真正的“学会了”是有差距的,差在哪里?如果你有尝试过去教会别人,或者自己准备写个说明文章你就明白了,差距真大,目测好记层楼那么高的差距。这几天写头条,我深有体会,大家有兴趣可以翻一下我前面的文章,我觉得我会的不少,但是写的时候头发都快被我自己薅没了,真心难,不过写的过程中不断的否定自己、确认自己这一圈下来收获也确实很大!好了,你懂该怎么做了吧,有兴趣一起来头条写文章吧,挺好玩!

本文不适合大牛!实在没有那个能力去指导大牛。所以有觉得文章不妥的大牛们还请善意的回复指正和讨论,上来就想骂街的还请您看在我敲了30分钟字挺不容易的份上,饶我一命!代表全家老小在双11这么伟大的日子给您想说一声“谢谢”。

有缘的朋友,欢迎回帖探讨。谢谢

⑶ 大专毕业去当程序员,每天都努力工作和学习,有机会去到阿里吗

大专毕业去当程序员,每天都努力工作和学习,是有机会去到阿里的,入职阿里需要哪些条件呢:

1.阿里的前端开发需要做到在某个领域有深入研究,需要有创新性的技术沉淀。而小型企业的前端开发,则只需要了解和熟悉前端的相关技术,二者横向对比,阿里的职业要求会更高,对职员的能力锻炼得也会更好。

4.与一些猎头或者意向部门员工保持长期联系,其实阿里现在很多时候并不是你都面过了,就一定能拿offer的,hc的审批不仅仅是跟岗位竞争者PK,有时候部门内部也会统筹的。如果竞争力不强的话,尽量多选择一些发展比较好的新业务部门,这种相对在发展期hc会足一些。

⑷ 阿里巴巴的面试流程是什么样子的

在阿里巴巴面试通常会有3轮面试:

1、第一轮面试:

第一轮面试通常是电话面,面试官会提前打电话约定面试时间,在接到面试官电话时,不要紧张,如果自己尚未准备好面试,或者时间不方便,可以将时间约靠后一点,留下足够的时间缓冲。

面试的时候不用太紧张,面试你的工程师通常就是你所应聘岗位所在团队的成员,他是在为自己的团队挑选队友,因此,没有理由为难你。

2、第二轮面试:

如果你顺利通过第一轮面试,那么,大约一周后,将进行第二轮面试。第二轮面试的面试官通常是团队主管(不一定是你所应聘岗位所在的团队,因为存在“交叉面“防作弊)。

第二轮面试如果是程序员会考察程序员的能力水平,通过笔试和问答做出最后的判断。

3、第三轮面试:

在通过第二轮面试后,通常就进入到了技术“终面”,本轮通常由部门总监、HRD来面试。主要面试个人的心理素质,职业素养以及为人待物的能力。

如果面试者可以顺利通过3论面试就可以收到来自阿里巴巴的offer了。

1、基础知识的掌握

阿里的技术面试通常是一个由浅入深的过程。起初,面试官会根据岗位要求问一些技术相关的基础问题。当然“基础”二字的含义并不是简单,如果没有充分的准备和足够的积累,也容易被拒绝。

根据面试经验,超过一半的应聘者在这个环节被拒绝,因此,建议应聘者切勿“裸考”,否则留下一个“基础不扎实”的面试记录,短期内再应聘阿里的成功率就很低了。

2、应变能力

阿里面试官会通过设计类问题来考查应聘者的“应变能力”。

例如,给一个具体的问题,要求应聘者给出设计方案,比如设计一个交通信号灯系统,一个中国象棋系统,一个问答系统,一个在线购物网站等等。要求画出模块图,给出关键的API的定义或者类和类之间的关系。

⑸ 程序员阿里三次面试已过却无理由挂了,网友:阿里HR有一票否决

进入互联网大厂一般都是“过五关斩六将”,难度堪比西天取经,但当你真正面对这些大厂的面试时,有时候又会被其中的神操作弄的很是蒙圈。

近日,某位程序员发帖称,自己去阿里面试,三面都过了,却被无理由挂了,阿里某部门HR还问他为何不考虑阿里。当时这位程序员内心里恐怕默默说了句“你为什么不上清华,是因为不喜欢吗?”故而发帖向广大网友吐槽。

原贴如下:

楼主表示,自己发这个帖子只是想吐槽一下:这次给我打电话的阿里同学,之前面阿里的时候,也遇到过很nice的同学,那个内部帮我查我三面面试结果另一个阿里的同学其实就很好,全程跟踪,语气平和,虽然最后我还是没去他们部门面试吧。所以感觉公司大了,真的会遇到各种人吧。祝大家面试都能遇到好的面试官。

不少人向楼主一样感慨,太真实了,现实工作中,还真就有能一直重复一个已经被回答的问题(其实就是硬逼着你承认他心中的答案)

还有网友也跟大家吐槽自己在面试中遇到的这种情况:和我一样啊,最后给我的理由是项目的经历不符合要求

也有网友吐槽“暗讽”:太他妈飘;每次接阿里的电话都带着敬仰;这tm可是大名鼎鼎的阿里,是你的爷,是你职业生涯巅峰,你竟然不考虑???爸爸问你话呢;难怪阿里的电话被标记为了骚扰电话不无道理

还有人给楼主支招:反问他为什么要考虑;你应该直接挂电话的;阿里给我打电话,我直接回复对阿里没兴趣;建议以后我司的面试官都先测完智商,再给候选人打电话;

也有人给楼主分析三面过了还被挂的原因,而楼主也猜测有可能在刷KPI。

阿里以及其他的互联网大厂技术类社招,一般分为四个轮次,第一、第二轮都是技术面,然后是主管面和HR面。

技术面除了必须要会的编程题目,个人的沟通表达能力、学习能力同样也很重要;相对于技术面,主管面则会更加注重考察求职者的其他维度是否与团队相匹配,比如:逻辑思维和沟通能力;最后的HR面相对常规一些。HR面试完之后,后续可能还有一轮leader面。

大厂虽苦难熬,但有能力的同学进入大厂工作利大于弊,因为能和这个行业国内最优秀的人一起共事,收获的眼界和方法等等都是不可比拟的。

你觉得呢?

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

作为一个编程十几年的老程序员,虽然没有进过阿里巴巴,中间换工作时候也拒绝过网络和腾讯的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就能正常运行。

非技术层面的就看公司的业务能力了。

个人看法,

⑺ 阿里巴巴java程序员p7级别需要哪些技能和条件,怎么才能成功进入阿里p7级别

首先P7一般都不是随便给的,都需要你有很深的资历才能拿到。
一般进去的本科生和研究生给到P3,P4
优秀的给到P5
从P5到P7至少要干10年,要么是学术能力强,要么是工程能力强

⑻ 作为一个应届生程序员,我是怎么通过阿里的三轮面试的

首先,自我介绍。
我:“我做过两个项目。写过几篇论文和专利。还参加过阿里巴巴大数据竞赛。同时,出于个人兴趣,我还阅读了一下HDFS的少部分源码,理解了一下HDFS的核心思想,实现了一个功能非常简单,并且还不完善的HDFS。”
面试官1:“说一说你写的论文中的某一篇的创新点?”
我:“我写的文章或者专利,主要遵循一个原则:将已有的理论或者模型应用到新的场景中。所以,都是偏向应用的。重点说说这篇论文吧。首先,从奇异值分解说起吧……”
大概讲了几分钟后,面试官1打断我:“你做的这些东西都偏向数据挖掘方向,为什么没有投数据挖掘呢?”
我:“因为,按照我的理解,数据挖掘这个岗位需要对机器学习算法有深入研究,然而,我做的偏向于对数据挖掘算法的应用。所以,我想投研发,偏向数据挖掘和分布式方向,从基础做起。”
面试官1:“其实,你的优势是做过数据挖掘。这样吧,我先找一个数据研发的面试官对你进行一下面试。等会儿,你再来我这。”
虽然自己也系统地学习过机器学习算法,但是接触时间太短(几个月),研究不够深入,只在比赛中用过少数几种算法:LR、RF和GBRT。自己的优势在于对数据的理解和特征的提取,以及算法的应用。
而算法推导过程并不清楚,只是理解了其思想。我怕被问得太细致,所以不是很情愿。不过,在面试官1的坚持下,最终还是同意了。
看到第二个面试官的牌子上写着“数据研发”,我稍微舒了口气;幸好不是“数据挖掘”。

今年,“数据研发”岗位招人挺多的,很多都是去小微金服。面试完之后,我觉得“数据研发”的岗位要求是这样子的:

熟练掌握基本的SQL语句;因为有一道笔试题目。我觉得阿里应该用自己的ODPS-SQL(类似于Hive)进行数据研发,虽然这个平台挺复杂的,但是面试的时候的要求并不高。只要掌握基本的内建函数和SQL语句就行了:select, group by…

我在比赛过程中,写过几万行SQL代码(去重之后几千行),没有用到过索引和视图;经常用到内建函数,偶尔使用UDF(用户自定义函数)。但是,写的代码不包含索引、视图和UDF。也没有考优化(其实我也不懂)。

有数据研发方面的相关经历,面试官似乎很注重这一项。我参加过阿里巴巴大数据竞赛。

对数据研发有一些自己的看法。这个很关键,一定要思路清晰。我主要在讲比赛中的模型:数据的预处理->训练集、预测集->特征提取->进一步处理->正负样本比例->训练->预测。

当然会用写MapRece的话就过更好了。阿里的平台提供了MapRece,估计工作中会用到。

然后,跟第二个技术面试官开始交流。
面试官2:“自我介绍一下吧。”
我:“刚才介绍过其他经历了。那我主要介绍下与数据研发相关的经历吧。”然后,简单说了下自己参加的阿里巴巴大数据竞赛。
面试官2:“行。先做一道题目吧。”
面试官给了我一道SQL的题目:给定一个表,共四列:user_id, brand_id, time, cnt(花的钱数)。从这个表里面选出用户B对每个品牌brand购买的总额度。
一看到,有点窃喜,这跟我竞赛做的东西太相似了。
跟面试官进行简单沟通后,很快写出来了。不过还是怕做错,检查了很久才拿给面试官2。顺便提了一下,如果需要处理字符串的话,我会用ODPS-SQL里面的UDF。面试官看了下程序,没说什么,就放到了一边。
后面,我们主要在讨论阿里巴巴大数据竞赛:我做了什么,用什么模型、算法做的,准确率是多少。(这块讨论时间最多)
还好,我主要讨论的是对业务和数据的理解,没有深入讨论数据挖掘算法。
讨论很顺利。结束之后,面试官2把我带回面试官1。
回来后,继续与面试官1主要讨论我写的论文。由于之前对自己写的论文进行过总结,思路很清晰。并谈论了写论文的体会和收获。
总之,第一面的面试官很和蔼,交谈也很开心。

再次稍微提一下:个人觉得面试官主要有两类,一类是用技术把你问死,从而判断你对技术的掌握深度。

另一类是,简单的技术问题之后,让你去表现,引导你来讲,从而看你这个人的思想、表达能力、个人观点等综合素质。

当然,一个面试官如果看到你不善于表达,就只能一直问你问题了。很荣幸,我碰到的是第二种面试官。面试跟聊天一样轻松。

最终,顺利通过。
应该是这个样子的吧 哈哈【ITjob]

⑼ 程序员在阿里巴巴总部工作是怎么样的

你好,程序员在阿里工作从以下三个方面来说,在互联网公司总体是不错的。

1、阿里工程师岗位职级

阿里巴巴集团采用双序列职业发展体系

一套体系是专家路线【P序列=技术岗】,程序员、工程师,某一个专业领域的人才,一共分为14级,从P1到P14,目前校招最低从P4开始。

一套体系是M路线,即管理者路线【M序列=管理岗】,从M1到M10。

考核因素是上一年的绩效分数+直属领导的打分+晋升委员会打分,这里的委员会一般由直属领导+合作方的高管+懂业务的HRG组成。HRG:HR多面手,base在业务下面,在阿里话语权比别的互联网HR高。

晋升标准:绩效满足3.75、主管提名、技术答辩通过。

P8架构师作为阿里“IT架构灵魂人物”的角色,他们不仅做着架构师的本职工作,还同时做程序开发,写核心代码的工作。另外,架构师依旧是技术高手,编程能力依然是一流的。

但根据当前的市场需求,互联网大厂们对于普通Java开发人才需求逐年锐减,而对互联网架构师人才的需求招聘量已经上升到50%,因此薪资更是不可同日而语。

对于想学习互联网架构师的同学来说,北大青鸟、课工场等优秀品牌都是不错的选择。课程根据招聘需求制定,包含全部分布式微服务技术,对标阿里P8级别架构师。



希望我的回答对你有所帮助!

⑽ 如何看出来阿里是不是外包公司

目前在大众的观念中,几乎传统的所有产品、项目、服务类型的软件公司都属于外包公司。
事实上中国外包业务的发展经历了长期的衍变。
以前做产品的现在也做外包业务、做项目的也做外包、做运维的也做外包、做互联网的也做外包,故而全中国的软件公司都是外包公司也说得过去。
01
很多公司不能全部归为外包公司,实际上还是有很大区别的。主要看其外包业务收入占主营业务收入的比例是否超过50%。
比如我们说起来业内比较知名大型软件类外包公司包括:文思海羡贺辉、中软国际、东软集团、软通动力、法本信息、博朗、博彦、中科软等。这些大型软件外包公司一般有几万人规模,有对日的、对欧美的、还有更多的是面向中国国企、外企和大型互联网企业的。
还有很多大型的传统产品或项目型软件公司也做各类外包业务,比如宝信软件、东方国信,浪潮、用友、亚信等。
可以说中国知名的软件公司少有不做外包的。
这些公司大多是上市公司,主要在国内,有些在国外。
这些公司真的都能叫外包公司么?如果按照有外包业务就叫外包公司看,那么阿里、华为都是外包公司了!现在企业级市场也多了batj等传统互联网企业,特别是阿里,最近几年积极进军企业级市场,投标政府还有各大型行业客户外包订单。

根据财政部网站2021年4月26日的《丽泽金融商务区构筑全球新兴金融高地》文章显示,“丽泽将全力支持中华联合保险集团股份有限公司与阿里云计算有限公司就保险行业数字化转型及保险科技开展项目,建立新一代全分布式保险核心系统。”
还有华为,就更不用说了。

华为2021年年报业务占比
华为一半以上收入来自于消费者业务和运营商业务,其中有大量的服务项目,都是需要驻场或者出差的,企业业务只占2.1%,华为还和中软有合资的外包公司,那么华为算外包公司么?
02
当市场上大量的软件公司被打上外包公司时,他们的心情会是怎样的呢?
大家认为的外包公司其实很多以前真的专注于产品、服务,比如用友就是做财务软件的,比如亚信就是做计费软件的。
2002年的时候亚信就是中国移动的主要供应商,很多程序员就要驻场二次开发和项目实施部署,也没人认为自己是在一家外包公司,还是很为公司自豪的。
有些程序员本能地反感所有的外包公司,实际上是大量的不规范公司的不规范操作或者说是近几年的市场决定的。
2012年后,中国大型国企实力越来越强,同外企和上市公司一样,对于人效比的要求和考核越来越高,业务需要不断增长,但是公司的资源却燃纳满足不了所有的编制人员,使用外包人员可以很大程度的降本增效,于是大量的业务被外包出去。
越来越多的小型外包公司出现,也有越来越多的传统软件公司开始介入外包业务。
大家要明白一点,全中国不知道有多少程序员,能自己单独做产品的占多少比例?大部分还是做项目,项目都是谁派发出来?主要是政府、国企、外企和海外。
所以其实很多软件公司也是没办法,谁不想自己的员工就在自己公司,好管控、离职率也低,但甲方不同意,从代码安全性、便于管理等角度出发一般都要求驻场。
也是从那时候开始,大量的被外包的程序员逐渐积累了越来越多的怨气,演变成现在在知乎上兄段派是只要是外包公司就不投简历。
如果全中国的程序员都不考虑外包公司,那么实际上能够供大家选择的岗位是非常少的。
最终大部分程序员会无处可去,相对应的外包公司也会随之倒闭。
所以大家不用那么排斥,存在即合理,只要擦亮眼睛,挑选好正规的外包公司就可以规避这个问题,大中型软件公司做外包业务是基于市场现状决定的,因为国企也好、外企也好、上市公司也好都缺乏正式编制,指标年年上浮,团队KPI不断提升,业务量上去了只能找外部公司,比如阿里接了个单,阿里就变成外包公司了?不至于。
正因为有需求,才会有市场。

阅读全文

与程序员如何测试阿里相关的资料

热点内容
生活用品代理商怎么赚钱 浏览:72
zorro市场价多少钱 浏览:4
市场上卖卤肉有什么规定 浏览:115
公益市场有什么好处 浏览:132
网约车怎么代理加盟 浏览:634
河东企业代理多少钱 浏览:359
中天合创交易是什么 浏览:699
怎么去推广闲鱼的产品 浏览:311
闵行区人事代理如何操作 浏览:827
拍摄小视频用什么程序 浏览:920
现在学机器人应用技术前景怎么样 浏览:436
女生说为什么不发信息给她怎么回答 浏览:729
微信小程序纠纷怎么处理 浏览:970
新技术有哪些主要作用 浏览:45
哪些产品市场按职业细分更有效 浏览:127
教育辅导机构市场该怎么做 浏览:490
养猪市场如何出售 浏览:185
去市场卖货买什么样的车好 浏览:254
咏宁水泥厂里卸车用什么小程序 浏览:674
贵阳花溪有哪些蔬菜批发市场 浏览:194