简单讲讲自己成为架构的经历

不好意思吧友们 最近每天都是凌晨三点 实在太晚了 所以就没更新

按照之前的计划我会更新我的面试经历 然后根据我的面试经历给大家参考自己的规划 面试部分我会拿第一次和第二次的面试经历来叙述

重点按照下面三个方面来讲
1. 面试经历写实
2. 面试准备的技能
3. 面试经典问题
4. 楼主个人的面试经验和感想以及为什么我面试成功率90%以上

楼主 清风_树  发布于 2019-02-02 21:26:00 +0800 CST  
1. 面试经历

lz主要的经历是两次面试第一次可能更有说服力

第一次是我从大连跳槽道上海之后来找的工作 几乎完全自学的java 然后去找到的工作 第一份工作到手8.8k 大家可以参考

1.1 技能篇
1.1.1 javase
好像大家都叫这个名字 就是面试中高级java必定被问的问题 还有一些特殊的公司 比如如果面试支付宝是楼主做面试官的话 第一面我会面50%的java基础 50%的架构思路 所以这部分看面试官的风格 不一而足

lz个人的话准备的技术栈可以完全按照thinking in java来准备
分别是 java内存结构 gc基础 io基础 线程并发基础 容器基础
然后每个知识栈准备五个递进问题 作为面试的基础能力考察部分
lz个人第一次面试只到第三个问题 由于这里不是技术篇 所以我这里不过多介绍基础内容 只抛出简单的介绍 具体的解答和分析会单独罗列

楼主 清风_树  发布于 2019-02-02 22:42:00 +0800 CST  
技能篇-java内存结构
1. 典型jvm的内存结构(以hotspot为例) 主要是堆 栈 方法区 介绍不同发内存的内存作用 声明一个对象的时候的内存使用
2. 每个内存具体存的内容 最长问的是方法区 部分 包括常量池和class文件部分的价值和存储 static关键字的使用等等
3. java版本信息 这里需要注意(我每次面试别人必定问)jdk1.8之后对于pemgen有优化 变成了metaspace 这个是可伸缩的变量区(之前是不可以伸缩的)需要重点了解变化地点
4. did一次面试lz没有达到的 系统级别的内存概念和java内存交互 比如寄存器和内存指令的交互

楼主 清风_树  发布于 2019-02-02 22:42:00 +0800 CST  
回答一波问题明天继续

楼主 清风_树  发布于 2019-02-02 22:42:00 +0800 CST  
技能篇-并发
1. 引子 引入线程并发感念 考察常见的并发场景的处理方法 比如lz遇到的共享map的并发处理 答使用collections 1.5之后可以(记不清了)使用concurrent hash map
2. 具体并发控制的api的不同 主要是1.5之后新增了java.consurrent 包里面有新增的并发读写锁这个和synchronise不同
3. 并发访问下的内存分配 我们知道线程是java概念 进程是系统概念 那么java在申请线程的时候是如何和系统交互的 比如volitae 关键字的作用和内存控制 如内存级别的内存和共享内存
4. 内存指令的排序 如何保证对于共享内存处理的有序和线程内存如何刷新到共享内存

楼主 清风_树  发布于 2019-02-02 22:55:00 +0800 CST  
啊 终于回答完毕了 还有同学没回复的可以继续问我哈 我会一一回复的

楼主 清风_树  发布于 2019-02-02 23:38:00 +0800 CST  
技能篇-容器
1. hashmap的原理 数据结构 hash的链表散列原理 equalse方法和hashcode方法在hashmap中的使用(先hashcode进行确定index来确定buget如果碰撞则比较equalse方法然后形成链表)

2. hashmap的进阶原理 对于大小的控制 对于concurrentmodification ex的问题等等内容

3. 不同jdk版本下的hashmap原理 主要还是jdk1.8下对于hashmap进行了优化然后jdk1.5下对于hashmap的并发进行了优化

4. 对于hashmap在分布式业务下的应用 比如hash值的负载均衡 一致性hash等内容

楼主 清风_树  发布于 2019-02-03 14:02:00 +0800 CST  
后面会进行面试部分的总结和思想感悟 标注lz自己的学习方法和思考方法

楼主 清风_树  发布于 2019-02-03 14:02:00 +0800 CST  
1.1.2 javaee部分
javaee部分根据不同的面试企业可能考察的方面不一样 比如外包的公司可能重点考察javaee的框架serverlet和jsp 前端框架等内容 互联网公司可能重点考察常用框架如spring myvatis等内容 所以一定要做好规划啊

楼主 清风_树  发布于 2019-02-04 13:34:00 +0800 CST  
javaee-spring
spring这么说吧 现在不懂spring可以说不懂java了 现在spring可以说是一个一个完整的技术栈 lz面试的时候被问的是spring的设计思想和事务处理 所以这里说明这两点

1. spring的设计思想 di和ioc解决的问题 为什么使用spring进行配置而不是直接new 这里我的理解是面向对象思想的解释和面向对象设计五大原则然后引入架构风格最后解释技术选项的思考

我自己的回答 首先spring是一个轻量级的容器框架 基于工程模式封装了所有bean的构建方法生命周期
这种方式比e**轻量级非常多 并且对于架构设计来说控制上下文和bean的构建方法是控制架构范围的一种方法 如面向对象原则里面的ocp和lsp都是说了内聚和面对抽象设计 这样必须对于抽象的实现提供框架级别的支持
解释完上面之后再说 在做技术选型的时候需要考虑方方面面 对于spring这种容器及上下文的选择已经经过很多大型系统的验证 社区也非常丰富并且掌握的人足够多 所以是最合适的

楼主 清风_树  发布于 2019-02-04 13:34:00 +0800 CST  
javaee-框架部分
spring是单独罗列的 面试的时候可能遇到springaop问题spring的transaction manage的问题等等 还有一部分是mybatis等部分 这些lz真的好久不用了 所以每个人都自己准备自己的就好

楼主 清风_树  发布于 2019-02-04 13:35:00 +0800 CST  
1.1.2 项目问题
具体肯定会问项目里面的很多细节
lz第一次面试的时候只有企业管理软件所以逗死三层架构部分 第二次面试是互联网公司 当时自己做了消息服务(消息队列) 统一session管理和sso 标准app的后台系统简单架构 这里分别说 注意这里的项目经验是lz自己的 所以每个人要对自己的项目足够了解

项目-标准三层架构
标准服务器三层架构的职责划分 每一层的技术选型 每一层的职责内容 每一层的设计规范 比如标准的web层使用springmvc框架 考虑的是外部交互封装的是视图(服务器的json)这些内容

楼主 清风_树  发布于 2019-02-04 13:35:00 +0800 CST  
技能篇这里就简单介绍完毕了

这里都是lz第一次面试时掌握的技能 可以看出来都是基础技能 不同的是当时lz准备的时候会比别人多准备一些问题 所以面试初高级开发的时候成功率还很高 因为初高级开发考察的都是基础部分

下面会介绍一些思路篇章 思路部分可能比较抽象 所以这里会简单介绍

思路介绍完毕后就讲讲我第一份工作的具体内容和自己学习的过程

希望帮助到大家

楼主 清风_树  发布于 2019-02-04 13:39:00 +0800 CST  
大家新年好 祝愿所学终有所报

楼主 清风_树  发布于 2019-02-04 22:55:00 +0800 CST  
各个地方推销自己的帖子 好心累

楼主 清风_树  发布于 2019-02-12 23:35:00 +0800 CST  
感觉又没人看了 我还是后面讲的生动一些吧

楼主 清风_树  发布于 2019-02-18 18:04:00 +0800 CST  
2. 思路篇
其实如果一路看下来的同学会发现lz对思路非常非常重视 可以说整个帖子都是用自己的思路来拆开技能给大家讲 自己成长的经历就是思路更迭的过程 这个可以后面说说(又挖坑)
2.1 思路篇-简历
2.1.1 简历整体写什么
简历可以说是求职最重要的了 我们需要写联系方式 项目经历 自我介绍 教育信息 个人亮点 一个完整的建立必定是包含上面每一点的 请一定完整书写
2.1.2 项目经历
项目经历请一定一定参考我的建议 记住项目经历不是流水账记录你的工作内容 而是一个展示技能展示能力的工具 请一定记住没人会在意你之前项目是怎么做的 大家在意的是你用这个项目体现出来的能力
具体内容为
1. 项目概述 按照业务背景 项目目标 应用架构的方式来逐一描述自己的项目 概述就是用一句话来描述项目是在干什么 业务背景则需要描述业务场景 业务功能如果感觉自己nb可以介绍业务架构 应用架构可以简单理解为这个项目的技术选型和技术相关的架构 记住项目介绍的时候必须每个都涉及到
2. 自我职责
重点说明自己在项目中完成了什么内容 与第一点的不同地方是 第一点是整个项目的 哪怕不是自己做的也要介绍(因为这样可以体现自己的宏观思路和能力) 而这部分介绍自己在项目中承担的职责 即自己完成了哪部分工作 这部分工作的核心设计是什么 有哪些地方自己觉得很nb 并且针对哪些地方进行了深入了解
3. 项目递进
上面两点是必须写在简历里面的 而这点是需要融入道面试和简历中的 项目递进 主要是表现出自己的思考能力学习能力以及在项目中没有用到但是自己具备的能力 这也是面试中考察的重点 如
是否能具体介绍项目整体架构
目前架构是否合理 是否有更好的实现方式
如果业务量级翻十倍 那么目前的技术架构能否完成?

楼主 清风_树  发布于 2019-02-18 19:29:00 +0800 CST  
今天下班早 大家问起来啊

楼主 清风_树  发布于 2019-02-18 19:29:00 +0800 CST  
最近很多面试 这里贴一个今天我简单记录的面试记录 可以让大家看一下具体阿里的要求

楼主 清风_树  发布于 2019-02-20 17:27:00 +0800 CST  
1. 自我介绍,重点介绍技术栈和项目经理
2. 结合项目直接问soa服务化拆分的原则和拆分的设计.引导水平拆分和垂直拆分的一些思考.由于候选人说没有做垂直拆分就无法进行追问.
3. 候选人提出自己写了一个分布式事务的sdk.所以针对分布式事务模型进行了提问,主要考察基于jta/xa两阶段模型上的设计和思考.没有发现对分布式事务模型进行过多了解和思考.后续追问如何实现一阶段/二阶段.但是候选人对于xa模型不太理解.后续提醒之后发现对于transactionManager还是有所设计.但是没有详细了解关于分布式事务一致性的保障问题.如事务恢复涉及.
4. 提到弱一致性的读高并发.进而进行问如何解决高并发写的问题.候选人提出使用redis进行缓冲记录库存的方案.以及提出使用处理请求队列的方案.进而提问对于请求队列导致的时效性降低(异步化)如何解决.候选人没有理解
5. javacore问题.多线程线程池参数问题,coresize,maxsize等参数是否了解,回答不完美.

楼主 清风_树  发布于 2019-02-20 17:28:00 +0800 CST  

楼主:清风_树

字数:23707

发表时间:2019-01-17 21:04:00 +0800 CST

更新时间:2021-02-23 06:19:43 +0800 CST

评论数:1927条评论

帖子来源:百度贴吧  访问原帖

 

热门帖子

随机列表

大家在看