架构师

Java后端架构师技术图谱

泄露秘密 提交于 2020-12-08 04:29:02
<h1>《后端架构师技术图谱》</h1> 数据结构 队列 《java队列——queue详细分析》 非阻塞队列:ConcurrentLinkedQueue(无界线程安全),采用CAS机制(compareAndSwapObject原子操作)。 阻塞队列:ArrayBlockingQueue(有界)、LinkedBlockingQueue(无界)、DelayQueue、PriorityBlockingQueue,采用锁机制;使用 ReentrantLock 锁。 《LinkedList、ConcurrentLinkedQueue、LinkedBlockingQueue对比分析》 集合 《Java Set集合的详解》 链表、数组 《Java集合详解--什么是List》 字典、关联数组 《Java map 详解 - 用法、遍历、排序、常用API等》 栈 《java数据结构与算法之栈(Stack)设计与实现》 《Java Stack 类》 《java stack的详细实现分析》 Stack 是线程安全的。 内部使用数组保存数据,不够时翻倍。 树 二叉树 每个节点最多有两个叶子节点。 《二叉树》 完全二叉树 《完全二叉树》 叶节点只能出现在最下层和次下层,并且最下面一层的结点都集中在该层最左边的若干位置的二叉树。 平衡二叉树 左右两个子树的高度差的绝对值不超过1

Java程序员从阿里、京东、美团面试回来,这些面试题你会吗?

五迷三道 提交于 2020-10-29 20:58:46
最近有很多朋友去目前主流的大型互联网公司面试(阿里巴巴、京东、美团、滴滴),面试回来之后会发给我一些面试题。有些朋友轻松过关,拿到offer,但是有一些是来询问我答案的。 其实本来真的没打算写这篇文章,主要是自己得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来。自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容基本上忘得一干二净,所以写这篇文章其实是很有难度的。 但是,最近问我的人实在是太多了,为了避免重复回答,给自己省点力气,干脆就在这里统一回复了。 说实话,我只能隐约想起并发、JVM、分布式、TCP/IP协议这些个关键字,具体的问题真的是几乎都没记住。而且就算我记住了,也告诉你了,你也背会了,但我觉得,在面试中,你被问到一模一样问题的可能性依然很小。 甚至,就算你运气好被问到了,你也照着背下来了,也不一定就能对你的面试起到正面的作用,因为面试官万一多问一句,你可能就露馅了,那还不如干脆点说不会更好。 在此给大家讲一下大型互联网企业面试题。 先来看下自己记录的面试材料: 一、阿里巴巴面试 第一个:阿里面试都问什么? :(55分钟) 1、开发中Java用了比较多的数据结构有哪些? 2谈谈你对HashMap的理解,底层原理的基本实现,HashMap怎么解决碰撞问题的? 这些数据结构中是线程安全的吗?假如你回答HashMap是线程安全的

专家解析:程序员到软件架构师培训与认证之路

北城余情 提交于 2020-04-02 07:41:57
如果你对项目管理、系统架构有兴趣,请加微信订阅号“softjg”,加入这个PM、架构师的大家庭 软件架构师一般都是具备计算机科学或软件工程的知识,由程序员做起,然后再慢慢发展为架构师的。 软件架构师的培养 软件架构师一般都是具备计算机科学或软件工程的知识,由程序员做起,然后再慢慢发展为架构师的。在国内,很多大学目前还没有设立软件架构的学位课程,虽然IT业界对设计和架构的兴趣日渐高涨,但各学校还无法在课程中增加相应的内容来体现这一趋势。从这个方面来说,学校教育已经远远落后于产业发展。因此,促进和发展软件架构学课程的任务将落在现在的软件架构师身上。目前的软件架构师应该帮助各大院校建立相关课程体系,一旦教育课程建立起来,知识体将不仅通过新毕业生的工作成果来得到扩展,同时也会从适合软件架构的教育研究和出版物中得到扩展。 虽然大学要加强软件架构学课程的建设,但是,软件架构师的成长应该有一个实践的教育过程,并不是简单的学校的理论学习或者通过大型软件公司的认证就能成为合格的软件架构师。除了信息系统综合知识在学校学习外,软件架构师的大部分知识和经验将来自实际开发工作。根据软件架构师的任职条件,一名合格的软件架构师的成长应该经历8年以上的软件项目开发实际工作经验。一般需要经历程序员、软件设计师等阶段,然后再发展成为软件架构师。 当然,并不是每一位程序员经过8年后都可以成长为软件架构师的

小论文-软件构架师

浪尽此生 提交于 2020-03-29 07:08:54
要知道软件架构师的工作过程,首先就要知道什么是软件架构师,以及为什么一个项目需要架构师。 软件架构师,是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。主导系统全局分析设计和实施、负责软件构架和关键技术决策的人员。简单来说,就是将客户的需求转换为开发计划的角色。 软件架构师的任务是领导与协调整个项目中的技术活动(分析、设计和实施等)、推动主要的技术决策,并最终表达为软件构架、确定和文档化系统的相对构架而言意义重大的方面,包括系统的需求、设计、实施和部署等“视图”、确定设计元素的分组以及这些主要分组之间的接口、为技术决策提供规则,平衡各类涉众的不同关注点,化解技术风险,并保证相关决定被有效的传达和贯彻等。所以我们可以看出,架构师的主要任务不是从事具体的软件程序的编写,而是从事更高层次的开发构架工作。他必须对开发技术非常了解,并且需要有良好的组织管理能力。可以这样说,一个架构师工作的好坏决定了整个软件开发项目的成败。 在需求阶段,软件架构师主要负责理解和管理非功能性系统需求,比如软件的可维护性、性能、复用性、可靠性、有效性和可测试性等等,此外,架构师还要经常审查和客户及市场人员所提出的需求,确认开发团队所提出的设计,从而明确需求。 在需求越来越明确后,架构师的关注点开始转移到组织开发团队成员和开发过程定义上,

架构师的职责

依然范特西╮ 提交于 2020-03-28 18:40:43
http://blog.csdn.net/huwei2003/article/details/51392131 1)需求的抽象、转换;2)系统分解;3)设计模型建立;4)框架技术选型;5)技术风险排查; 主要职责:将需求转化为编码说明书。 架构师的职责主要有如下4条:   1、确认需求   在项目开发过程中,架构师是在需求规格说明书完成后介入的,需求规格说明书必须得到架构师的认可。架构师需要和分析人员反复交流,以保证自己完整并准确地理解用户需求。   2、系统分解   依据用户需求,架构师将系统整体分解为更小的子系统和组件,从而形成不同的逻辑层或服务。随后,架构师会确定各层的接口,层与层相互之间的关系。架构师不仅要对整个系统分层,进行“纵向”分解,还要对同一逻辑层分块,进行“横向”分解。   软件架构师的功力基本体现于此,这是一项相对复杂的工作。   3、技术选型   架构师通过对系统的一系列的分解,最终形成了软件的整体架构。技术选择主要取决于软件架构。   Web Server运行在Windows上还是Linux上?数据库采用MSSql、Oracle还是MySQL?需要不需要采用MVC或者spring等轻量级的框架?前端采用富客户端还是瘦客户端方式?类似的工作,都需要在这个阶段提出,并进行评估。   架构师对产品和技术的选型仅仅限于评估,没有决定权,最终的决定权归项目经理

系统架构师(云时代架构文章读后感12)

狂风中的少年 提交于 2020-03-28 18:39:51
一架构师职责 架构师是一个既需要掌控整体又要洞悉局部瓶颈,并依据具体的业务场景给出解决方案的团队领导型人物,他需要参与项目开发的全部过程,包括需求分析、架构设计、系统实现、集成、测试和部署各个阶段,负责在整个项目中对技术活动和技术说明进行指导和协调。 架构师主要职责有4条: 01确认需求 在项目开发过程中,架构师是在需求规格说明书完成后介入的,需求规格说明书必须得到架构师的认可。架构师需要和分析人员反复交流,以保证自己完整并准确地理解用户需求。 02系统分解 依据用户需求,架构师将系统整体分解为更小的子系统和组件,从而形成不同的逻辑层或服务。随后,架构师会确定各层的接口,层与层相互之间的关系。架构师不仅要对整个系统分层,进行“纵向”分解,还要对同一逻辑层分块,进行“横向”分解。 架构师的功力基本体现于此,这是一项相对复杂的工作。 03技术选型 架构师通过对系统的一系列的分解,最终形成了软件的整体架构。技术选择主要取决于软件架构。Web Server运行在Windows上还是Linux上?数据库采用MSSql、Oracle还是Mysql?需要不需要采用MVC或者Spring等轻量级的框架?前端采用富客户端还是瘦客户端方式?类似的工作,都需要在这个阶段提出,并进行评估。 架构师对产品和技术的选型仅仅限于评估,没有决定权,最终的决定权归项目经理

百度黄埔学院将培养一批首席AI架构师,为“国之重器”赋能

两盒软妹~` 提交于 2020-03-27 18:14:31
3 月,跳不动了?>>> 深度学习高端人才不仅是AI发展的重要养分,也是企业转型AI巨大推动力。2019年1月19日,百度黄埔学院——深度学习架构师培养计划在百度科技园举行开学典礼,深度学习技术及应用国家工程实验室副主任、百度AI技术平台体系执行总监吴甜,中国信息通信研究院副总工史德年,中国软件行业协会常务副秘书长陈宝国出席了典礼。吴甜表示,百度希望能帮助业界培养第一批“首席AI架构师”。 35位来自业界的高端深度学习人才作为“黄埔学院”首期学员,迎来第一课,与20余位担当导师的百度重量级科学家和技术负责人享受“AI知识盛宴”,中国深度学习第一核心技术圈初现雏形。 深度学习“人才荒”,培养稀缺人才正当时 近年来,中国的发展已经从高速增长向高质量发展转变,从粗放型增长向创新驱动增长转变,史德年表示,“在人工智能浪潮席卷全球的当下,深度学习作为核心技术,对于企业向AI转型的重要性不言而喻。”深度学习作为人工智能发展的重要一环,能让人工智能技术更快速地普及到各行各业,推动融合创新,推动经济、社会和文化等变革。 然而,据领英大数据显示,全球AI人才整体供给在340万人左右,而其中深度学习人才仅9.5万人,且流动性较大,进一步加大了缺口。 陈宝国谈到,软件将会成为人类社会的基础设施,应用软件的人才也是关键。2018年7月,中国软件行业协会就发布了国内首个AI产业专业技术人才培养标准——

JAVA架构师必备词汇和知识点

江枫思渺然 提交于 2020-03-26 08:00:50
01 高可用 负载均衡(负载均衡算法) 反向代理 服务隔离 服务限流 服务降级(自动优雅降级) 失效转移 超时重试(代理超时、容器超时、前端超时、中间件超时、数据库超时、NoSql超时) 回滚机制(上线回滚、数据库版本回滚、事务回滚) 02 高并发 应用缓存 HTTP 缓存 多级缓存 分布式缓存 连接池 异步并发 03 分布式事务 二阶段提交(强一致) 三阶段提交(强一致) 消息中间件(最终一致性),推荐阿里的 RocketMQ。 04 队列 任务队列 消息队列 请求队列 05扩容 单体垂直扩容 单体水平扩容 应用拆分 数据库拆分 数据库分库分表 数据异构 分布式任务 06 网络安全 SQL 注入 XSS 攻击 CSRF 攻击 拒绝服务(DoS,Denial of Service)攻击 架构师必备工具 01 操作系统 Linux(必备)、某软的 02 负载均衡 DNS、F5、LVS、Nginx、OpenResty、HAproxy、负载均衡SLB 03 分布式框架 Dubbo、Motan、Spring-Could 04 数据库中间件 DRDS 、Mycat、360 Atlas、Cobar (不维护了) 05 消息队列 RabbitMQ、ZeroMQ、Redis、ActiveMQ、Kafka 06 注册中心 Zookeeper、Redis 07 缓存 Redis、Oscache

关于软件架构师讨论

你离开我真会死。 提交于 2020-03-23 07:29:52
一、 刚当程序员时,我是属于那种勤勤恳恳类型的员工,工作态度用认真来形容不为过,每天我几乎是团队里最早到公司,又最晚下班的一个。而组员张工一般情况下都是准时上下班的,即使项目进度比较紧急,他也很少加班,除非是有特殊情况,他才加班。 要是按勤奋程度和工作时间长短来衡量,我想我比张工积极多了。按理说,我这么积极,工作量应该比张工多才对,其实不然,领导安排给我的工作任务和张工的任务相比,我比他还要少。 张工之前是做java服务端的,后来自学了Android移动开发,再后来又自学了iOS移动开发,那时他就是一位多能手,项目安排他做什么他就能做什么。 从张工提交的代码看,他的代码不仅规范而且很优雅,大的不说,就他能对一些基本控件进行封装处理,还做了拓展,方便给其他开发人员调用,就已经很让我敬佩不已了。 而我所谓的工作时间长,其实大多时间是在重复地造轮子,一个相同的功能重复做,不仅没有做封装处理,导致冗余代码还多,有时候刚好碰到需求改动,我就把自己累得够呛,现在想想,真的活该啊。 二、 类似这样的情况不知你身边有没有: 读书的时候,有的同学上课时眼睛睁得特别大,还做笔记,一节课下来,笔记本里密密麻麻的,课后做的练习题也不少,可成绩却差强人意。而有些同学表面看似不怎么努力,学习成绩却保持很好。 工作时,有些人总是“加班”,看起来很敬业,而他们上班时间却一会儿逛淘宝,一会儿刷微博,看头条

架构师能力模型解析-转Csdn

假装没事ソ 提交于 2020-03-23 05:13:42
做人、做事,做架构师——架构师能力模型解析 要想从一名普通程序员发展成为优秀的架构师,“个人特性”与“技术技能”缺一不可;而“技术专业能力”、“人际关系能力”和“业务能力”更是优秀架构师重要的三种能力。 文 / 周爱民(《程序员》2008年4月刊) 引子 究竟是什么让你在同一个位置上——例如程序员或技术负责人——工作了三年、五年或者更久,而仍然得不到任何的发展空间?你觉得自己已成为技术圈中的大牛,并信心满满地去拿明天就要颁发的某某大奖,然而却仍然停留在同样的技术职位上,去年到今年涨的薪水甚至填不平物价升幅?于是,你开始对老板不满,对员工不满,对昨天升职的那个同事不满……你开始计划明天就要跑单,或者准备考虑提出加薪却又心怀忐忑。 如果技术人员有发展的轨迹,那么他要么“看透工具的本质,把关注点转移到‘团队’的圈子里去”,要么“顺着代码铺就的道路,亦步亦趋地成为良匠大师”。仅以技术方向而言,你大概可以做到架构师、总架构师甚至首席架构师;但问题是:你现在还只是一个程序员。那要如何才能踏上通往架构师之路呢?本文为你解析一个架构师的能力模型。 你能不能做一个好的架构师? 架构师不是界定一个技术高下的职位名称,而是一个职务。所谓职务,包括职——职位,务——工作。前者决定了你具备哪些资源,可以影响到怎样的范围,以及面向的机构,后者则简单地是你需要完成的工作列表。 所以我说“架构师”不是指