Java 架构师面试题
基础题目
Java线程的状态
进程和线程的区别,进程间如何通讯,线程间如何通讯
HashMap的数据结构是什么?如何实现的。和HashTable,ConcurrentHashMap的区别
Cookie和Session的区别
索引有什么用?如何建索引?
ArrayList是如何实现的,ArrayList和LinkedList的区别?ArrayList如何实现扩容。
equals方法实现
面向对象
线程状态,BLOCKED和WAITING有什么区别
JVM如何加载字节码文件
JVM GC,GC算法。
什么情况会出现Full GC,什么情况会出现yong GC。
JVM内存模型
Java运行时数据区
事务的实现原理
技术深度
有没有看过JDK源码,看过的类实现原理是什么。
HTTP协议
TCP协议
一致性Hash算法
JVM如何加载字节码文件
类加载器如何卸载字节码
IO和NIO的区别,NIO优点
Java线程池的实现原理,keepAliveTime等参数的作用。
HTTP连接池实现原理
数据库连接池实现原理
数据库的实现原理
技术框架
看过哪些开源框架的源码
为什么要用Redis,Redis有哪些优缺点?Redis如何实现扩容?
Netty是如何使用线程池的,为什么这么使用
为什么要使用Spring,Spring的优缺点有哪些
Spring的IOC容器初始化流程
Spring的IOC容器实现原理,为什么可以通过byName和ByType找到Bean
Spring AOP实现原理
消息中间件是如何实现的,技术难点有哪些
系统架构
如何搭建一个高可用系统
哪些设计模式可以增加系统的可扩展性
介绍设计模式,如模板模式,命令模式,策略模式,适配器模式、桥接模式、装饰模式,观察者模式,状态模式,访问者模式。
抽象能力,怎么提高研发效率。
什么是高内聚低耦合,请举例子如何实现
什么情况用接口,什么情况用消息
如果AB两个系统互相依赖,如何解除依赖
如何写一篇设计文档,目录是什么
什么场景应该拆分系统,什么场景应该合并系统
系统和模块的区别,分别在什么场景下使用
分布式系统
分布式事务,两阶段提交。
如何实现分布式锁
如何实现分布式Session
如何保证消息的一致性
负载均衡
正向代理(客户端代理)和反向代理(服务器端代理)
CDN实现原理
怎么提升系统的QPS和吞吐量
实战能力
有没有处理过线上问题?出现内存泄露,CPU利用率标高,应用无响应时如何处理的。
开发中有没有遇到什么技术问题?如何解决的
如果有几十亿的白名单,每天白天需要高并发查询,晚上需要更新一次,如何设计这个功能。
新浪微博是如何实现把微博推给订阅者
Google是如何在一秒内把搜索结果返回给用户的。
12306网站的订票系统如何实现,如何保证不会票不被超卖。
如何实现一个秒杀系统,保证只有几位用户能买到某件商品。
软能力
如何学习一项新技术,比如如何学习Java的,重点学习什么
有关注哪些新的技术
工作任务非常多非常杂时如何处理
项目出现延迟如何处理
和同事的设计思路不一样怎么处理
如何保证开发质量
职业规划是什么?短期,长期目标是什么
团队的规划是什么
能介绍下从工作到现在自己的成长在那里
JAVA架构师的水准
既然java架构师,首先你要是一个高级java攻城尸,熟练使用各种框架,并知道它们实现的原理。jvm虚拟机原理、调优,懂得jvm能让你写出性能更好的代码;
池技术,什么对象池,连接池,线程池...:;java反射技术,写框架必备的技术,但是有严重的性能问题,替代方案java字节码技术;nio,没什么好说的,值得注意的是"直接内存"的特点,使用场景;java多线程同步异步;
java各种集合对象的实现原理,了解这些可以让你在解决问题时选择合适的数据结构,高效的解决问题,比如hashmap的实现原理,好多五年以上经验的人都弄不清楚,还有为什扩容时有性能问题?不弄清楚这些原理,就写不出高效的代码,还会认为自己做的很对;
总之一句话越基础的东西越重要,很多人认为自己会用它们写代码了,其实仅仅是知道如何调用api而已,离会用还差的远。
熟练使用各种数据结构和算法,数组、哈希、链表、排序树...,一句话要么是时间换空间要么是空间换时间,这里展开可以说一大堆,需要有一定的应用经验,用于解决各种性能或业务上的问题;有时间再补充。
熟练使用linux操作系统,必备,没什么好说的 。
熟悉tcp协议,创建连接三次握手和断开连接四次握手的整个过程,不了解的话,无法对高并发网络应用做优化; 熟悉http协议,尤其是http头,我发现好多工作五年以上的都弄不清session和cookie的生命周期以及它们之间的关联。
系统集群、负载均衡、反向代理、动静分离,网站静态化 。
分布式存储系统nfs,fastdfs,tfs,Hadoop了解他们的优缺点,适用场景 。
分布式缓存技术memcached,redis,提高系统性能必备,一句话,把硬盘上的内容放到内存里来提速,顺便提个算法一致性hash 。点击这里有一套Redis面试题答案。
工具nginx必备技能超级好用,高性能,基本不会挂掉的服务器,功能多多,解决各种问题。
数据库的设计能力,mysql必备,最基础的数据库工具,免费好用,对它基本的参数优化,慢查询日志分析,主从复制的配置,至少要成为半个mysql dba。其他nosql数据库如mongodb。
还有队列中间件。如消息推送,可以先把消息写入数据库,推送放队列服务器上,由推送服务器去队列获取处理,这样就可以将消息放数据库和队列里后直接给用户反馈,推送过程则由推送服务器和队列服务器完成,好处异步处理、缓解服务器压力,解藕系统。
以上纯粹是常用的技术,还有很多自己慢慢去摸索吧;因为要知道的东西很多,所以要成为一名合格的架构师,必须要有强大的自学能力,没有人会手把手的教给你所有的东西。
想成为架构师不是懂了一大堆技术就可以了,这些是解决问题的基础、是工具,不懂这些怎么去提解决方案呢?这是成为架构师的必要条件。
架构师还要针对业务特点、系统的性能要求提出能解决问题成本最低的设计方案才合格,人家一个几百人用户的系统,访问量不大,数据量小,你给人家上集群、上分布式存储、上高端服务器,为了架构而架构,这是最扯淡的,架构师的作用就是第一满足业务需求,第二最低的硬件网络成本和技术维护成本。
架构师还要根据业务发展阶段,提前预见发展到下一个阶段系统架构的解决方案,并且设计当前架构时将架构的升级扩展考虑进去,做到易于升级;否则等系统瓶颈来了,出问题了再去出方案,或现有架构无法扩展直接扔掉重做,或扩展麻烦问题一大堆,这会对企业造成损失。
程序员应该需要都有自知之明,会就是会,不会就是不会,互联网发展迅速的时代,只能跟上时代的进步,才不会被淘汰。
Java 架构师面试题的更多相关文章
- JAVA架构师面试题 一
基础题目 Java线程的状态 进程和线程的区别,进程间如何通讯,线程间如何通讯 HashMap的数据结构是什么?如何实现的.和HashTable,ConcurrentHashMap的区别 Cookie ...
- Java架构师面试题——JVM性能调优
JVM内存调优 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数. 1.Full GC 会对整个堆进行整理,包括Young.Tenured和Perm.Full GC因为需要对 ...
- 程序员Java架构师多线程面试题和回答解析
当我们在Java架构师面试的过程中常见的多线程和并发方面的问题肯定是必不可少的一部分.那么在面试之前我们更应该多准备一些关于多线程方面的问题. 面试官只是想确信面试者有足够的Java线程与并发方面的知 ...
- 月薪30k的Java架构师JVM常见面试题解析
在做程序员的路上经常会遇到的JVM一些经典面试题,今天给大家分享出我自己的解题思路,希望对大家有帮助,后续有空会持续更新. 1.什么情况下会发生栈内存溢出. 思路: 描述栈定义,再描述为什么会溢出,再 ...
- 最新咕咆+鲁班+图灵+享学+蚂蚁+硅谷+源码 Java架构师资料《Java架构师VIP课程》
最新的Java架构师完整资料,完整视频+源码+文档. 每一套都是一百多个G的资料,无密. JAVA架构师全套课程 咕泡学院互联网架构师第一期 咕泡学院互联网架构师第二期 咕泡学院互联网架构师第三期 博 ...
- 空中网招聘Java架构师、数据库开发等各类人才
爱好网络游戏吗?爱好网站开发技术吗? 有没有想过可以成为史诗级MMO RPG<激战2>运营团队中的一员? 如果下面的职位有合适你的,加入我们吧! http://gw2.kongzhong. ...
- 【转】java架构师之路:JAVA程序员必看的15本书的电子版下载地址
作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从.我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水 ...
- paip.java 架构师之路以及java高级技术
paip.java 架构师之路以及java高级技术 1. Annotation 设计模式... 概念满天飞.ORM,IOC,AOP. Validator lambda4j memcache. 对 ...
- JAVA架构师要求
JAVA架构师要求专业素质要求:1.理解架构师的职责和架构设计的目标.原则及取舍:2.精通架构模式,Transaction.Security.Persistence等机制及实现,IOC.AOP.SOA ...
随机推荐
- JavaScript 数组2—关联数组
㈠什么是关联数组 可以自定义下标名称的数组 ㈡为什么 索引数组中的数字下标没有明确的意义 ㈢何时 只希望每个元素都有专门的名称时 ㈣如何:2步 1)创建空数组 2)向空数组中添加新元素,并自定义下标名 ...
- laravel短信验证
短信验证按钮倒计时功能: $('.btn').click(function(){ var time = 59; // $('.btn').css('background-color','#ccc'); ...
- iview响应式布局
我想说,我要被逼成前端了. 之前没接触过响应式,这两天和另一位前端程序媛小小的研究了下.做了一个小例子,记录一下,方便以后使用. <template> <div> <Ro ...
- 计算机网络(七),TCP与UDP的区别
七.TCP与UDP的区别 1.面向连接VS无连接 TCP面向连接而UDP面向无连接的,TCP是和单对单传送数据,UDP适合多波发布 2.可靠性 TCP利用握手,确认,重传机制提供了可靠性保证,UDP可 ...
- ASE高级软件工程 第一次结对作业
黄金点游戏Bot Bot8前来报道 1.问题定义 a) 问题描述 N个玩家,每人写一个0~100之间的有理数 (不包括0或100),提交给服务器,服务器在当前回合结束时算出所有数字的平均值,然后乘以0 ...
- HGOI 20190711 题解
Problem A 矩阵第K小数 给定一个$n \times m$的矩阵,位置$A_{i,j} = i\times j$, 给出$Q$个询问,每一次查询矩阵中第$Q_i$小的数是多少. 对于100% ...
- 前端学习之一_html学习
html元素分类 内连元素:出现在行内的元素 <img>,<q>,<a> 块元素:前后自动插入换行的元素 <h1> ...
- C#开启一个进程
Process myProc = null; myProc = Process.Start(@"E:\QQ轻聊\Tencent\QQLite\Bin\QQScLauncher.exe&quo ...
- linux挂载本地镜像
//创建挂载目录 mkdir /media/cdrom //挂载镜像 mount -t iso9660 /dev/cdrom /media/cdrom 提示:mount:block device /d ...
- 导入 kotlin(7)
导入包 除了默认导入之外,每个文件可以包含它自己的导入指令. 导入语法在语法中讲述.可以导入一个单独的名字,如.import foo.Bar // 现在 Bar 可以不用限定符访问也可以导入一个作用域 ...