• 原文 http://www.chinastor.org/gdcc/9259.html在网上找了一个牛人给出的题目牛人出的面试题如下:1. struts,spring,hibernate 这样的开源框架,他们的历史局限性在哪里?在何种情况下会不适合用这些框架?答:...

    原文  http://www.chinastor.org/gdcc/9259.html

    在网上找了一个牛人给出的题目

    牛人出的面试题如下:

    1. struts,spring,hibernate 这样的开源框架,他们的历史局限性在哪里?在何种情况下会不适合用这些框架?

    答:

    struts 是以请求回答方式为基础的 .ajax,flash 等富客户端越来越多了 .....

    spring 是由于 Java 的静态类型限制 , 等 java 可以支持动态方法添加之后 .....

    hibernate 是由于数据库都是关系型的 , 等数据库面向了对象之后 .....

    综上所述 ...ssh 蹦达不了几天了 .

    2.  如果要设计一个搜索引擎,像 google 那样只有两个页面,要求性能最大化, web 方面应该如何设计?(不需要考虑搜索的逻辑)

    答:

    性能 :

    1 客户端 :js 的写法 , 数据排列 , 不同浏览器区别 .

    2 服务器 : 逻辑 , 计算 , 缓存 , 减少 I/O, 提高命中

    3 传输 : 带宽 , 缓存 , 异步 , 进度条 , 并发 , 集群 , 数据压缩 .

    我认为最主要的性能是人的体验 , 其它都是可以放到第二位去的 .

    3.  如果要设计一个用于小型路由器中的 web 系统,应该如何来设计 ?

    答:

    使用不需要并发多线程的简单文件服务器提交后直接改文件 .

    不使用常规异常捕获方式

    ( 由于选择性少所以根本不使用异常 , 只提供软硬的复位 )

    4.  请评价下你所熟悉的 web 框架的可测试性如何 ,struts,springMVC,webwork 或其他均可 . 在什么样的条件下才能对 web 系统引入自动化测试 ? 请描述一套完备的面向 web 系统的自动化测试框架所应当具有的特性 .

    答: 测试框架所应当具有的特性 .

    由于容器的限制所以 :web,spring,hibernate 都不是很好测试 .

    由于大多数 web 是以人的体验为主的 . 主观概念变成代码代价过高

    由于页面生成工具没有足够的测试支持 . 所以写出的代码非常难以程序化自动化

    现有的 seleniumIDE 还不是很稳定

    如果把 html,js,css 分开 , 页面内容以 json 或 xml 来传输 , 页面的逻辑由 js 二次绚染成型那么测试成本会下降很多 .....

    ( 开发成本提高 2 到 5 倍 )

    5.  企业级应用有哪些特殊要求 ? 在何种情况下我们不需要考虑这些要求 ?

    答:

    性能 , 扩展性 ,7*24 小时 , 性能问题在出现性能问题之前不考虑 扩展性问题在签定长期维护 , 二期开发合同之前不考虑 7*24 工作系统一般不考虑 ... 开发中本身就是

    6. 你们从前的研发流程是怎样的 ? 如果由你来设计研发流程 , 是否能大幅提高生产力和开发质量 ? 如果能 , 那体现在哪些方面 ? 如果不能 , 瓶颈在哪里 ?

    答:

    ......................我设计的.........

    瓶颈很大一部分是由于没有勇气 去尝试新的实践.

    成为一个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 。

    工具nginx必备技能超级好用,高性能,基本不会挂掉的服务器,功能多多,解决各种问题。

    数据库的设计能力,mysql必备,最基础的数据库工具,免费好用,对它基本的参数优化,慢查询日志分析,主从复制的配置,至少要成为半个mysql dba。其他nosql数据库如mongodb。

    还有队列中间件。如消息推送,可以先把消息写入数据库,推送放队列服务器上,由推送服务器去队列获取处理,这样就可以将消息放数据库和队列里后直接给用户反馈,推送过程则由推送服务器和队列服务器完成,好处异步处理、缓解服务器压力,解藕系统。

    以上纯粹是常用的技术,还有很多自己慢慢去摸索吧;因为要知道的东西很多,所以要成为一名合格的架构师,必须要有强大的自学能力,没有人会手把手的教给你所有的东西。

    想成为架构师不是懂了一大堆技术就可以了,这些是解决问题的基础、是工具,不懂这些怎么去提解决方案呢?这是成为架构师的必要条件。

    架构师还要针对业务特点、系统的性能要求提出能解决问题成本最低的设计方案才合格,人家一个几百人用户的系统,访问量不大,数据量小,你给人家上集群、上分布式存储、上高端服务器,为了架构而架构,这是最扯淡的,架构师的作用就是第一满足业务需求,第二最低的硬件网络成本和技术维护成本。

    架构师还要根据业务发展阶段,提前预见发展到下一个阶段系统架构的解决方案,并且设计当前架构时将架构的升级扩展考虑进去,做到易于升级;否则等系统瓶颈来了,出问题了再去出方案,或现有架构无法扩展直接扔掉重做,或扩展麻烦问题一大堆,这会对企业造成损失。

    展开全文
  • Java架构师面试题

    2020-06-03 23:33:29
    个人搜集的Java架构师面试题及答案,有需要的朋友可以下载
  • java架构师常见面试题(一)   一、Java基础和高级 1.String类为什么是final的。 2.HashMap的源码,实现原理,底层结构。 3.反射中,Class.forName和classloader的区别 4.session和cookie的区别和联系...

    一、Java基础和高级

    1.String类为什么是final的。

    2.HashMap的源码,实现原理,底层结构。

    3.反射中,Class.forName和classloader的区别

    4.session和cookie的区别和联系,session的生命周期,多个服务部署时session管理。

    5.Java中的队列都有哪些,有什么区别。

    6.Java的内存模型以及GC算法

    7.Java7、Java8的新特性

    8.Java数组和链表两种结构的操作效率,在哪些情况下(从开头开始,从结尾开始,从中间开始),哪些操作(插入,查找,删除)的效率高

    9.Java内存泄露的问题调查定位:jmap,jstack的使用等等

    二、spring框架

    1. spring框架中需要引用哪些jar包,以及这些jar包的用途
    2. srpingMVC的原理
    3. springMVC注解的意思
    4. spring中beanFactory和ApplicationContext的联系和区别
    5. spring注入的几种方式
    6. spring如何实现事物管理的
    7. springIOC和AOP的原理
    8. spring中循环注入的方式
    9. Spring AOP与IOC的实现原理
    10. Spring的beanFactory和factoryBean的区别
    11. Spring的事务隔离级别,实现原理
    12. 对Spring的理解,非单例注入的原理?它的生命周期?循环注入的原理,aop的实现原理,说说aop中的几个术语,它们是怎么相互工作的?
    13. spring boot特性,优势,适用场景等

    三、java多线程常见问题

    1.Java创建线程之后,直接调用start()方法和run()的区别

    2.常用的线程池模式以及不同线程池的使用场景

    3.newFixedThreadPool此种线程池如果线程数达到最大值后会怎么办,底层原理。

    4.多线程之间通信的同步问题,synchronized锁的是对象,衍伸出和synchronized相关很多的具体问题,例如同一个类不同方法都有synchronized锁,一个对象是否可以同时访问。或者一个类的static构造方法加上synchronized之后的锁的影响。

    5.了解可重入锁的含义,以及ReentrantLock 和synchronized的区别

    6.同步的数据结构,例如concurrentHashMap的源码理解以及内部实现原理,为什么他是同步的且效率高

    7.atomicinteger和volatile等线程安全操作的关键字的理解和使用

    8.线程间通信,wait和notify

    四、网络通信

    1.http是无状态通信,http的请求方式有哪些,可以自己定义新的请求方式么。

    2.socket通信,以及长连接,分包,连接异常断开的处理。

    3.socket通信模型的使用,AIO和NIO。

    4.socket框架netty的使用,以及NIO的实现原理,为什么是异步非阻塞。

    5.同步和异步,阻塞和非阻塞。

    五、常用Linux命令

    1.常用的linux下的命令

    2.大的log文件中,统计异常出现的次数、排序,或者指定输出多少行多少列的内容。

    3.linux下的调查问题思路:内存、CPU、句柄数、过滤、查找、模拟POST和GET请求等等场景

    4.shell脚本

    六、数据库MySql

    1.MySql的存储引擎的不同

    2.单个索引、联合索引、主键索引

    3.Mysql怎么分表,以及分表后如果想按条件分页查询怎么办(如果不是按分表字段来查询的话,几乎效率低下,无解)

    4.分表之后想让一个id多个表是自增的,效率实现

    5.MySql的主从实时备份同步的配置,以及原理(从库读主库的binlog),读写分离

    6.事物的四个特性,以及各自的特点(原子、隔离)等等,项目怎么解决这些问题

    七、设计模式(写代码)

    1.单例模式:饱汉、饿汉。以及饿汉中的延迟加载

    2.工厂模式、装饰者模式、观察者模式等

    八、算法&数据结构&设计模式

    1. 使用随机算法产生一个数,要求把1-1000W之间这些数全部生成。(考察高效率,解决产生冲突的问题)
    2. 两个有序数组的合并排序
    3. 一个数组的倒序
    4. 计算一个正整数的正平方根
    5. 说白了就是常见的那些查找排序算法
    6. 数组和链表数据结构描述,各自的时间复杂度
    7. 二叉树遍历
    8. 快速排序
    9. BTree相关的操作
    10. 在工作中遇到过哪些设计模式,是如何应用的
    11. hash算法的有哪几种,优缺点,使用场景
    12. 什么是一致性hash
    13. paxos算法

    九、分布式缓存

    1.为什么用缓存,用过哪些缓存,redis和memcache的区别

    2.redis的数据结构

    3.redis的持久化方式,以及项目中用的哪种,为什么

    4.redis集群的理解,怎么动态增加或者删除一个节点,而保证数据不丢失。(一致性哈希问题)

    线程池、高并发、NIO

    1. 分析线程池的实现原理和线程的调度过程
    2. 线程池如何调优
    3. 线程池的最大线程数目根据什么确定
    4. 动态代理的几种方式
    5. HashMap的并发问题
    6. 了解LinkedHashMap的应用吗
    7. 反射的原理,反射创建类实例的三种方式是什么?
    8. cloneable接口实现原理,浅拷贝or深拷贝
    9. Java NIO使用
    10. hashtable和hashmap的区别及实现原理,hashmap会问到数组索引,hash碰撞怎么解决
    11. arraylist和linkedlist区别及实现原理
    12. 反射中,Class.forName和ClassLoader区别
    13. String,Stringbuffer,StringBuilder的区别?
    14. 有没有可能2个不相等的对象有相同的hashcode
    15. 简述NIO的最佳实践,比如netty,mina
    16. TreeMap的实现原理

    JVM相关(面试必考)

    1. JVM内存分代
    2. Java 8的内存分代改进
    3. JVM垃圾回收机制,何时触发MinorGC等操作
    4. jvm中一次完整的GC流程(从ygc到fgc)是怎样的,重点讲讲对象如何晋升到老年代,几种主要的jvm参数等
    5. 你知道哪几种垃圾收集器,各自的优缺点,重点讲下cms,g1
    6. 新生代和老生代的内存回收策略
    7. Eden和Survivor的比例分配等
    8. 深入分析了Classloader,双亲委派机制
    9. JVM的编译优化
    10. 对Java内存模型的理解,以及其在并发中的应用
    11. 指令重排序,内存栅栏等
    12. OOM错误,stackoverflow错误,permgen space错误
    13. JVM常用参数

    分布式相关

    1. Dubbo的底层实现原理和机制
    2. 描述一个服务从发布到被消费的详细过程
    3. 分布式系统怎么做服务治理
    4. 接口的幂等性的概念
    5. 消息中间件如何解决消息丢失问题
    6. Dubbo的服务请求失败怎么处理
    7. 重连机制会不会造成错误
    8. 对分布式事务的理解
    9. 如何实现负载均衡,有哪些算法可以实现?
    10. Zookeeper的用途,选举的原理是什么?
    11. 数据的垂直拆分水平拆分。
    12. zookeeper原理和适用场景
    13. zookeeper watch机制
    14. redis/zk节点宕机如何处理
    15. 分布式集群下如何做到唯一序列号
    16. 如何做一个分布式锁
    17. 用过哪些MQ,怎么用的,和其他mq比较有什么优缺点,MQ的连接是线程安全的吗
    18. MQ系统的数据如何保证不丢失
    19. 列举出你能想到的数据库分库分表策略;分库分表后,如何解决全表查询的问题。

    数据库

    1. MySQL InnoDB存储的文件结构
    2. 索引树是如何维护的?
    3. 数据库自增主键可能的问题
    4. MySQL的几种优化
    5. mysql索引为什么使用B+树
    6. 数据库锁表的相关处理
    7. 索引失效场景
    8. 高并发下如何做到安全的修改同一行数据,乐观锁和悲观锁是什么,INNODB的行级锁有哪2种,解释其含义
    9. 数据库会死锁吗,举一个死锁的例子,mysql怎么解决死锁

    Redis&缓存相关

    1. Redis的并发竞争问题如何解决了解Redis事务的CAS操作吗
    2. 缓存机器增删如何对系统影响最小,一致性哈希的实现
    3. Redis持久化的几种方式,优缺点是什么,怎么实现的
    4. Redis的缓存失效策略
    5. 缓存穿透的解决办法
    6. redis集群,高可用,原理
    7. mySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据
    8. 用Redis和任意语言实现一段恶意登录保护的代码,限制1小时内每用户Id最多只能登录5次
    9. redis的数据淘汰策略

    答案的话自己花时间去总结吧 你会有收获的 加油!!!

    展开全文
  • JAVA架构师面试题,如何成为架构师 经常面试一些候选人,整理了下我面试使用的题目,陆陆续续整理出来的题目很多,所以每次会抽一部分来问。答案会在后面的文章中逐渐发布出来。 基础题目 Java线程的状态 进程...

                                      JAVA架构师面试题,如何成为架构师

    经常面试一些候选人,整理了下我面试使用的题目,陆陆续续整理出来的题目很多,所以每次会抽一部分来问。答案会在后面的文章中逐渐发布出来。

    基础题目

    1. Java线程的状态

    2. 进程和线程的区别,进程间如何通讯,线程间如何通讯

    3. HashMap的数据结构是什么?如何实现的。和HashTable,ConcurrentHashMap的区别

    4. Cookie和Session的区别

    5. 索引有什么用?如何建索引?

    6. ArrayList是如何实现的,ArrayList和LinkedList的区别?ArrayList如何实现扩容。

    7. equals方法实现

    8. 面向对象

    9. 线程状态,BLOCKED和WAITING有什么区别

    10. JVM如何加载字节码文件

    11. JVM GC,GC算法。

    12. 什么情况会出现Full GC,什么情况会出现yong GC。

    13. JVM内存模型

    14. Java运行时数据区

    15. 事务的实现原理

    技术深度

    1. 有没有看过JDK源码,看过的类实现原理是什么。

    2. HTTP协议

    3. TCP协议

    4. 一致性Hash算法

    5. JVM如何加载字节码文件

    6. 类加载器如何卸载字节码

    7. IO和NIO的区别,NIO优点

    8. Java线程池的实现原理,keepAliveTime等参数的作用。

    9. HTTP连接池实现原理

    10. 数据库连接池实现原理

    11. 数据库的实现原理

    技术框架

    1. 看过哪些开源框架的源码

    2. 为什么要用Redis,Redis有哪些优缺点?Redis如何实现扩容?

    3. Netty是如何使用线程池的,为什么这么使用

    4. 为什么要使用Spring,Spring的优缺点有哪些

    5. Spring的IOC容器初始化流程

    6. Spring的IOC容器实现原理,为什么可以通过byName和ByType找到Bean

    7. Spring AOP实现原理

    8. 消息中间件是如何实现的,技术难点有哪些

    系统架构

    1. 如何搭建一个高可用系统

    2. 哪些设计模式可以增加系统的可扩展性

    3. 介绍设计模式,如模板模式,命令模式,策略模式,适配器模式、桥接模式、装饰模式,观察者模式,状态模式,访问者模式。

    4. 抽象能力,怎么提高研发效率。

    5. 什么是高内聚低耦合,请举例子如何实现

    6. 什么情况用接口,什么情况用消息

    7. 如果AB两个系统互相依赖,如何解除依赖

    8. 如何写一篇设计文档,目录是什么

    9. 什么场景应该拆分系统,什么场景应该合并系统

    10. 系统和模块的区别,分别在什么场景下使用

    分布式系统

    1. 分布式事务,两阶段提交。

    2. 如何实现分布式锁

    3. 如何实现分布式Session

    4. 如何保证消息的一致性

    5. 负载均衡

    6. 正向代理(客户端代理)和反向代理(服务器端代理)

    7. CDN实现原理

    8. 怎么提升系统的QPS和吞吐量

    实战能力

    1. 有没有处理过线上问题?出现内存泄露,CPU利用率标高,应用无响应时如何处理的。

    2. 开发中有没有遇到什么技术问题?如何解决的

    3. 如果有几十亿的白名单,每天白天需要高并发查询,晚上需要更新一次,如何设计这个功能。

    4. 新浪微博是如何实现把微博推给订阅者

    5. Google是如何在一秒内把搜索结果返回给用户的。

    6. 12306网站的订票系统如何实现,如何保证不会票不被超卖。

    7. 如何实现一个秒杀系统,保证只有几位用户能买到某件商品。

    软能力

    1. 如何学习一项新技术,比如如何学习Java的,重点学习什么

    2. 有关注哪些新的技术

    3. 工作任务非常多非常杂时如何处理

    4. 项目出现延迟如何处理

    5. 和同事的设计思路不一样怎么处理

    6. 如何保证开发质量

    7. 职业规划是什么?短期,长期目标是什么

    8. 团队的规划是什么

    9. 能介绍下从工作到现在自己的成长在那里



    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 。

    工具nginx必备技能超级好用,高性能,基本不会挂掉的服务器,功能多多,解决各种问题。

    数据库的设计能力,mysql必备,最基础的数据库工具,免费好用,对它基本的参数优化,慢查询日志分析,主从复制的配置,至少要成为半个mysql dba。其他nosql数据库如mongodb。

    还有队列中间件。如消息推送,可以先把消息写入数据库,推送放队列服务器上,由推送服务器去队列获取处理,这样就可以将消息放数据库和队列里后直接给用户反馈,推送过程则由推送服务器和队列服务器完成,好处异步处理、缓解服务器压力,解藕系统。

    以上纯粹是常用的技术,还有很多自己慢慢去摸索吧;因为要知道的东西很多,所以要成为一名合格的架构师,必须要有强大的自学能力,没有人会手把手的教给你所有的东西。

    想成为架构师不是懂了一大堆技术就可以了,这些是解决问题的基础、是工具,不懂这些怎么去提解决方案呢?这是成为架构师的必要条件。

    架构师还要针对业务特点、系统的性能要求提出能解决问题成本最低的设计方案才合格,人家一个几百人用户的系统,访问量不大,数据量小,你给人家上集群、上分布式存储、上高端服务器,为了架构而架构,这是最扯淡的,架构师的作用就是第一满足业务需求,第二最低的硬件网络成本和技术维护成本。

    架构师还要根据业务发展阶段,提前预见发展到下一个阶段系统架构的解决方案,并且设计当前架构时将架构的升级扩展考虑进去,做到易于升级;否则等系统瓶颈来了,出问题了再去出方案,或现有架构无法扩展直接扔掉重做,或扩展麻烦问题一大堆,这会对企业造成损失。

    程序员应该需要都有自知之明,会就是会,不会就是不会,互联网发展迅速的时代,只能跟上时代的进步,才不会被淘汰。


    展开全文
  • 架构师职位常见面试题 源码分析 常用设计模式 23种经典设计模式都有哪些,如何分类 阿里java设计模式面试题 Spring 框架中都用到了哪些设计模式 开发中都用到了那些设计模式?用在什么场合? 微服务架构的六...

    java基础

    java进阶面试题
    java面试进阶篇及答案1
    java面试进阶篇及答案2
    java面试进阶篇及答案3
    java面试进阶篇及答案4
    java面试进阶篇及答案5
    HashSet的实现原理

    JVM

    java 虚拟机面试题全面解答
    JVM相关面试题及答案
    JVM 常见面试题进阶
    JVM 常见面试题指南助你横扫BAT!
    jvm虚拟机 BAT面试题系列
    Java架构师面试题——JVM性能调优
    JVM笔记10-性能优化之高级特性
    阿里的性能优化面试题到底有多难?这四大问题你能答出多少!
    【转载】深入理解JVM性能调优
    4种垃圾收集算法及7种垃圾收集器

    并发编程

    disruptor
    Java魔法类:Unsafe应用解析
    JAVA多线程和并发基础面试问答
    史上最全Java多线程面试题及答案
    Java并发编程75道面试题及答案——稳了
    高并发面试题大全含答案
    阿里P8架构师总结Java并发面试题(精选)
    java并发面试题(一)基础
    Java多线程中的10个面试要点
    并发的核心:CAS 是什么?Java8是如何优化 CAS 的?

    网络

    nf_conntrack详解,linux内核的网络连接配置
    计算机网络面试问题集锦
    常见的网络编程面试题
    java网络编程面试题
    java网络编程面试题2

    spring

    Spring核心IOC的源码分析
    Spring IOC和Spring AOP的实现原理(源码主线流程)
    79道spring面试题和答案
    spring cloud面试题和答案0
    spring cloud面试题和答案1
    spring cloud面试题和答案2
    spring cloud面试题和答案3
    spring cloud面试题和答案4
    spring mvc面试题和答案
    spring boot面试题和答案

    mybatis

    36道MyBatis经典面试题及答案

    分布式架构

    Leaf——美团点评分布式ID生成系统
    分布式系统的面试题1-15
    Java分布式架构, Dubbo面试题汇总
    分布式面试题总结
    面试官问分布式技术面试题,一脸懵逼怎么办
    分布式面试题
    分布式面试题(含解答)
    面试题架构篇分布式事务
    一些高可用的面试题整理
    面试中的nginx高可用高并发!

    微服务架构

    架构面试必知必会的微服务面试题
    面试之微服务架构问题(含答案)
    Java面试——微服务
    进大厂必须掌握的50个微服务面试问题
    29个你必须掌握的微服务面试问题(含答案)
    微服务相关面试问题整理

    中间件

    tomcat

    四张图带你了解Tomcat系统架构–让面试官颤抖的Tomcat回答系列
    Tomcat 面试题汇总
    Tomcat调优面试题

    nginx

    Nginx面试题目
    nginx18道面试题
    关于nginx的五大面试题

    Zookeeper

    Zookeeper面试题
    小米和京东的4道关于Dubbo、Zookeeper等的面试题
    Java面试高级篇—Dubbo与Zookeeper面试题16期
    ZooKeeper常见面试题
    ZooKeeper常见面试题
    zookeeper面试题

    Redis

    基于redis的setnx()、get()、getset()方法 分布式锁(含代码)
    史上最全Redis面试题及答案
    46道史上最全Redis面试题
    Redis常见面试题
    分布式Redis面试常见问题及知识点归纳
    Redis 分区
    面试进阶必问的Redis
    Redis深入之道:原理解析、场景使用以及视频解读
    美团在Redis上踩过的一些坑
    redis扩展题
    分布式缓存的面试题1
    分布式缓存的面试题2
    分布式缓存的面试题3
    分布式缓存的面试题4
    分布式缓存的面试题5
    分布式缓存的面试题6
    分布式缓存的面试题7
    分布式缓存的面试题8
    分布式缓存的面试题9
    分布式缓存的面试题10

    MQ

    RabbitMQ概念详解
    Kafka、RabbitMQ、RocketMQ等消息中间件的对比
    消息队列的面试题1
    消息队列的面试题2
    消息队列的面试题3
    消息队列的面试题4
    消息队列的面试题5
    消息队列的面试题6
    消息队列的面试题7
    怎么设计一个消息队列?
    消息中间件面试题:消息队列的优缺点,区别
    如何保证消息队列的高可用
    消息队列面试题
    高并发架构消息队列面试题解析

    ElasticSearch

    分布式搜索的面试题1
    分布式搜索的面试题2
    分布式搜索的面试题3
    分布式搜索的面试题4
    Elasticsearch面试题
    ElasticSearch常见经典面试题
    干货 | BAT等一线大厂 Elasticsearch面试题解读
    Lucene&Solr&ElasticSearch-面试题
    4个最难的 Elastic Search 面试题
    面试小结之Elasticsearch篇
    Elasticsearch调优

    数据库

    mysql性能优化-慢查询分析、优化索引和配置
    SQL面试题之SQL优化
    SQL优化|Java面试题
    MySQL数据库优化的八种方式(经典必看)
    MySQL数据库InnoDB存储引擎Log漫游(1)
    MySQL数据库InnoDB存储引擎Log漫游(2)
    MySQL数据库InnoDB存储引擎Log漫游(3)
    MySQL面试问题
    MySQL面试之高可用架构类问题
    史上最全的数据库面试题
    高并发下数据库分库分表面试题整理
    分库分表的面试题1
    分库分表的面试题2
    分库分表的面试题3
    分库分表的面试题4
    分库分表的面试题5
    面试题:MySQL性能调优——索引详解与索引的优化
    面试官:你来谈谈数据库优化的几个阶段?
    超详细:数据库性能优化(一)
    性能优化之数据库优化
    MySQL数据库性能调优的10个方法分享
    腾讯面试:一条SQL语句执行得很慢的原因有哪些

    设计模式

    23种经典设计模式都有哪些,如何分类
    阿里java设计模式面试题汇总(附答案)
    单例、开发中用到的设计模式
    java设计模式面试题
    阿里java设计模式面试题
    Spring 框架中都用到了哪些设计模式
    开发中都用到了那些设计模式?用在什么场合?
    Azure架构中心发布了九种新的设计模式
    微服务软件架构的认识和设计模式(六种微服务常用设计模式)
    微服务架构下的若干常用设计思想

    DevOps

    DevOps面试问题总结
    面试题: Docker的优缺点
    2019年最新docker面试题和答案!
    Docker面试问题与解答

    算法

    微软等数据结构+算法面试100题全部答案集锦
    数据结构算法常见面试考题
    力扣算法面试题
    LeetCode算法题

    大数据

    大数据面试题及答案
    大数据面试题大全
    2018年大数据面试题总结

    系统设计实例

    秒杀系统注意点
    高并发场景下秒杀系统的设计思路
    高并发系统的设计及秒杀实践
    Java编程详细解析—淘宝大秒杀系统是如何设计的?
    如何设计一个 RPC 系统
    史上最全DDoS攻击与防御教程
    一文带你实现RPC框架

    展开全文
  • 现在的面试已经与前些年有很大的不同了,早些年,2010年之气基本是ssh或者ssm的方式进行项目的开发,面试也主要考察这些内容,那个时候都很少提及到分布式,随着...本课程从面试的角度带你刷一波分布式相关的面试题
  • 整理中....未整理完 大家好,本人面试基本 “笔试死”、问"基础死"、"Java常识死"那一类型的....面试的过程中也从曾经被“鄙视”过,被...(我面试时从来没有做完过一套,只是选择其中1-2...

    整理中....未整理完

    大家好,本人面试基本 “笔试死”、问"基础死"、"Java常识死"那一类型的....面试的过程中也从曾经被“鄙视”过,被否定过,但是这些并不能否定我们的一个价值,笔试或者基础成为面试环节中的重要一环,为什么不整理一下,好好准备呢?

    我们要正确认识"笔试"的意图:即使做不好也没关系,在之后的面试当中表现好也是有 机会的 。(我面试时从来没有做完过一套题,只是选择其中1-2道认真作答,然后手机百度试卷上其他不会的知识点但是不会再作答,只是掌握不会的知识点,不建议和我学哈)

    这几天面试了众多公司,涉及BAT,涉及金融、电子商务、传统行业、互联网行业等,职位涉及Java高级工程师、架构师、技术经理等,特此整理一份比较全的面试题,供大家参考。(整理周期一周:截止2018年9月15日完)

    一般在程序员的垂直招聘网站投递即可,比如脉脉、BOSS直聘、拉勾等等。智联招聘啥的,不太适合咱们程序员,你懂的。另外,由于自己不是大牛,所以如果有猎头勾搭的话,尽量不去理会。所以尽量还是自己投简历比较靠谱,或者是内推

     

    分类面试笔试题  传送门

    1、Java面试题以及答案精选(架构师面试题)-Spring专题

    2、Java面试题以及答案精选(架构师面试题)-数据库专题

    3、Java面试题以及答案精选(架构师面试题)-基础题1

    基础题

    100、hashset和hashmap的区别与联系


    101. 类有哪基本特性?各特性的优点? 
    解答:类具有抽象、封装性、继承性和多态性。 

    抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象
    封装性:类的封装性为类的成员提供公有、缺省、保护和私有等多级访问权限,目的是隐藏类中的私
    有变量和类中方法的实现细节。 
    继承性:类的继承性提供从已存在的类创建新类的机制,继承(inheritance)使一个新类自动拥有
    被继承类(父类)的全部可继承的成员。 
    多态性:类的多态性提供类中方法执行的多样性,多态性有两种表现形式:重载和覆盖。

    102 .jsp 有哪些内置对象?作用分别是什么?(至少三个) 
    解答: 
    1)request 表示 HttpServletRequest 对象。它包含了有关浏览器请求的信息,并且提供了几个用于
    获取 cookie, header 和 session 数据的有用的方法。 
    2)response 表示 HttpServletResponse 对象,并提供了几个用于设置送回 浏览器的响应的方法(如
    cookies,头信息等) 。 
    3) out 对象是 javax.jsp.JspWriter 的一个实例, 并提供了几个方法使你能用于向浏览器回送输出结
    果。 
    4) pageContext 表示一个 javax.servlet.jsp.PageContext 对象。 它是用于方便存取各种范围的名字
    空间、servlet 相关的对象的 API,并且包装了通用的 servlet 相关功能的方法。 
    5)session 表示一个请求的 javax.servlet.http.HttpSession 对象。Session 可以存贮用户的状态
    信息。 
    6)application 表示一个 javax.servle.ServletContext 对象。这有助于查找有关 servlet 引擎和
    servlet 环境的信息。 
    7)config 表示一个 javax.servlet.ServletConfig 对象。该对象用于存取 servlet 实例的初始化参
    数。 
    8)page 表示从该页面产生的一个 servlet 实例。

    103.说一说Servlet的生命周期?

    答: Servlet生命周期分为三个阶段:

      1,初始化阶段  调用init()方法

      2,响应客户请求阶段  调用service()方法-àdoGet/doPost()

      3,终止阶段  调用destroy()方法

    104.方法重载和方法重写的概念和区别(面试过程中别问到过)

    方法重写(override):即方法覆盖。指的是父子类中方法的关系。父类A中有方法method1,在子类中想要使用method1这个方法签名而又要实现与父类method1方法不同的功能,这个时候就要用到方法重写。即子类使用父类的方法签名,但子类方法体与父类不同,实现的功能不同。(实现了父类方法内部逻辑,即覆盖,方法名称和参数保持一致)

    方法重载(overload):同一个类中方法之间的关系。这里要弄清楚如何区别是两个方法签名是否同一个方法的签名。方法签名的区分规则:方法签名的区分是以方法的参数类型、排序与个数为标准的。如果两个方法签名有相同的参数类型、参数排序和参数个数,那么这两个方法使用的同一个签名。在同一个类中两个方法使用同一个方法签名会报错。而方法重载就是两个方法使用了相同的方法名而方法的参数不一致。(方法名称一致,但是参数类型和个数不一样)

    105.线程的基本概念、线程的基本状态以及状态之间的关系

     

    106.运行时异常与一般异常有何异同

    异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。

    107 说出ArrayList,Vector, LinkedList的存储性能和特性

    ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

    108.说出Servlet的生命周期,并说出Servlet和CGI的区别。

    Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。

    与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。

     

    提升篇:

    200.

    sql使用建议及优化方法

    https://blog.csdn.net/u010223407/article/details/50736810 

     

    内存溢出常见情况和和处理方式?

     

    解答:导致OutOfMemoryError异常的常见原因有以下几种:

    1. 内存中加载的数据量过于庞大,如一次从数据库取出过多数据;
    2. 集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;
    3. 代码中存在死循环或循环产生过多重复的对象实体;
    4. 使用的第三方软件中的BUG
    5. 启动参数内存值设定的过小;

    此错误常见的错误提示:

    1. tomcat:java.lang.OutOfMemoryError: PermGen space
    2. tomcat:java.lang.OutOfMemoryError: Java heap space
    3. weblogic:Root cause of ServletException java.lang.OutOfMemoryError
    4. resin:java.lang.OutOfMemoryError
    5. java:java.lang.OutOfMemoryError

    解决java.lang.OutOfMemoryError的方法有如下几种:

    • 增加jvm的内存大小。方法有: 1)在执行某个class文件时候,可以使用java -Xmx256M aa.class来设置运行aa.classjvm所允许占用的最大内存为256M 2)对tomcat容器,可以在启动时对jvm设置内存限度
    •  优化程序,释放垃圾。

    主要包括避免死循环,应该及时释放种资源:内存, 数据库的各种连接,防止一次载入太多的数据。导致java.lang.OutOfMemoryError的根本原因是程序不健壮。因此,从根本上解决Java内存溢出的唯一方法就是修改程序,及时地释放没用的对象,释放内存空间。 遇到该错误的时候要仔细检查程序,嘿嘿,遇多一次这种问题之后,以后写程序就会小心多了

    Java代码导致OutOfMemoryError错误的解决:

    需要重点排查以下几点:

    1. 检查代码中是否有死循环或递归调用。
    2. 检查是否有大循环重复产生新对象实体。
    3. 检查对数据库查询中,是否有一次获得全部数据的查询。一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。这个问题比较隐蔽,在上线前,数据库中数据较少,不容易出问题,上线后,数据库中数据多了,一次查询就有可能引起内存溢出。因此对于数据库查询尽量采用分页的方式查询。
    4. 检查ListMAP等集合对象是否有使用完后,未清除的问题。ListMAP等集合对象会始终存有对对象的引用,使得这些对象不能被GC回收。

    参考文章:http://outofmemory.cn/c/java-outOfMemoryError  

     

    经常面试一些候选人,整理了下我面试使用的题目,陆陆续续整理出来的题目很多,所以每次会抽一部分来问。答案会在后面的文章中逐渐发布出来。 
    基础题目

    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

    基础(非

    Jave

    程序员可略过)

    1. HashTable

    HashMap

    的区别

    2. String和StringBuffer的区别

    3.final,finally,finalize

    的区别

    4. static,final,const

    的区别

    二、基础知识

    派生子进程的系统凋用是什么?

    如何使某进程使用某个固定的

    cpu?

    进程、线程、协程的区别是什么?

    简単解释什么是死锁?

    进程间通信有几种方法?

    简述tcp/udp的逐别

    简述tcp三次握手

     

    架构题

    300:说明反转控制(IOC)和面向方向编程(AOP)在 spring 中的应用 
    解答:Spring 核心容器(Core)提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,
    它是工厂模式的实现。BeanFactory 使用控制反转(Ioc)模式将应用程序的配置和依赖性规范与实际
    的应用代码程序分开。Spring 的声明式事务基于 AOP 实现,却并不需要程序开发者成为 AOP 专家,亦
    可轻易使用 Spring 的声明式事务管理。 

     

    301:HashMap和Hashtable的区别.以及HashMap底层实现原理,线程安全新增一个类是XXX

    这个道题被许多公司问到过,希望大家重视起来,熟练的掌握。(未整理完)

    HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都实现了Map接口。主要区别在于HashMap允许空(null)键值(key),由于非线程安全,效率上高于Hashtable,

    HashMap允许将null作为一个entry的key或者value,Hashtable不允许。HashMap把Hashtable的contains方法去掉了,改成containsValue和containsKey,因为contains方法容易让人产生误解。

    Hashtable继承自Dictionary类, 而HashMap是Java1.2引进的Map interface的一个实现。

    最大的不同是,Hashtable的方法是synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap就必须为之提供同步

     

    302.abstract class 和 interface 有什么区别

     

    303.Arraylist,Vector,LinkedList的存储性能和特性

    ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢。

    Vector由于用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,序号索引数据需要进行前向或后台遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快

    304 .JVM相关(重点!架构师必问)

     

    305.并发包&并发变成&多线程&线程池(高开&架构师必须会)

     

    306.AOP &IOC&事务&Spring源码

    IoC就是Inversion of Control,控制反转。在Java开发中,IoC意味着将你设计好的类交给系统去控制,而不是在你的类内部控制。这称为控制反转。

     Spring AOP面向方面编程原理:AOP概念(1)AOP(Aspect Oriented Programming),也就是面向方面编程的技术。AOP基于IoC基础,是对OOP的有益补充。

    AOP将应用系统分为两部分,核心业务逻辑(Core business concerns)及横向的通用逻辑,也就是所谓的方面Crosscutting enterprise concerns,例如,所有大中型应用都要涉及到的持久化管理(Persistent)、事务管理(Transaction Management)、安全管理(Security)、日志管理(Logging)和调试管理(Debugging)等。

    AOP正在成为软件开发的下一个光环。使用AOP,你可以将处理aspect的代码注入主程序,通常主程序的主要目的并不在于处理这些aspect。AOP可以防止代码混乱。

    Spring framework是很有前途的AOP技术。作为一种非侵略性的、轻型的AOP framework,你无需使用预编译器或其他的元标签,便可以在Java程序中使用它。这意味着开发团队里只需一人要对付AOP framework,其他人还是像往常一样编程。
     


    spring提供的事务管理可以分为两类:编程式的和声明式的。编程式的,比较灵活,但是代码量大,存在重复的代码比较多;声明式的比编程式的更灵活。

    围绕Poxy的动态代理 能够自动的提交和回滚事务
    org.springframework.transaction.interceptor.TransactionProxyFactoryBean

    PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。 

    PROPAGATION_SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。 

    PROPAGATION_MANDATORY--支持当前事务,如果当前没有事务,就抛出异常。 

    PROPAGATION_REQUIRES_NEW--新建事务,如果当前存在事务,把当前事务挂起。 

    PROPAGATION_NOT_SUPPORTED--以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。 

    PROPAGATION_NEVER--以非事务方式执行,如果当前存在事务,则抛出异常。 

    PROPAGATION_NESTED--如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作。

    307.注解方式,注解相关

     

    308.分布式事务(架构师必考)

    最终一致性

    309.dubbo相关

    10层

     

    310.solr&es

    变慢原因:solr 建立索引 IO阻塞

     

    311 CAP&base

     

    312.设计模式

    单例,工厂,观察者,等等

     

    313.排序常用方法(sort,compareXXX)

     

     

     

    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 。 
    工具nginx必备技能超级好用,高性能,基本不会挂掉的服务器,功能多多,解决各种问题。 
    数据库的设计能力,mysql必备,最基础的数据库工具,免费好用,对它基本的参数优化,慢查询日志分析,主从复制的配置,至少要成为半个mysql dba。其他nosql数据库如mongodb。 
    还有队列中间件。如消息推送,可以先把消息写入数据库,推送放队列服务器上,由推送服务器去队列获取处理,这样就可以将消息放数据库和队列里后直接给用户反馈,推送过程则由推送服务器和队列服务器完成,好处异步处理、缓解服务器压力,解藕系统。 
    以上纯粹是常用的技术,还有很多自己慢慢去摸索吧;因为要知道的东西很多,所以要成为一名合格的架构师,必须要有强大的自学能力,没有人会手把手的教给你所有的东西。 
    想成为架构师不是懂了一大堆技术就可以了,这些是解决问题的基础、是工具,不懂这些怎么去提解决方案呢?这是成为架构师的必要条件。 
    架构师还要针对业务特点、系统的性能要求提出能解决问题成本最低的设计方案才合格,人家一个几百人用户的系统,访问量不大,数据量小,你给人家上集群、上分布式存储、上高端服务器,为了架构而架构,这是最扯淡的,架构师的作用就是第一满足业务需求,第二最低的硬件网络成本和技术维护成本。 
    架构师还要根据业务发展阶段,提前预见发展到下一个阶段系统架构的解决方案,并且设计当前架构时将架构的升级扩展考虑进去,做到易于升级;否则等系统瓶颈来了,出问题了再去出方案,或现有架构无法扩展直接扔掉重做,或扩展麻烦问题一大堆,这会对企业造成损失。

    面试题:

    1.HttpservletResponse的sendError方法的作用
    2.什么情况下使用URL重写
    3.doGet和doPost在什么时候调用?区别?
    4.response对象的作用
    5.jsp中import指令的作用

    1.    网络通讯中,端口有什么含义。端口的取值范围?
    2.    jsp是如何被容器调用和执行的?
    3.    编写一个servlet的步骤。
    4.    为什么要为servlet配置URL映射
    5.    谈谈servlet的生命周期

    21.    说出3个常见协议的默认端口。
    22.    socket是什么,它有什么作用?
    23.    TCP/IP通讯的基本步骤是什么?
    24.    UDP通讯的基本步骤是什么?
    25.    JDBC访问数据库的基本步骤是什么(手写)?
    26.    说说preparedStatement和Statement的区别
    27.    说说事务的概念,在JDBC编程中处理事务的步骤。
    28.    数据库连接池的原理。为什么要使用连接池。
    29.    servlet和jsp有什么关系?
    30.    编写一个servlet的步骤。
     

    1.    css和div 开发的优势?
    优点:1)div+css,这个布局中,div承载的是内容,而css承载的是样式。内容和样式的分离。
    2)搜索引擎亲和力(快速找到需要的数据,而不是像在table中一层层的查找) 重构页面的方便性(换皮肤如blog)
       缺点:开发效率低
    2.    谈谈页面间的参数传递有哪些方式 ?
    通过请求作用域request,session,通过内部转发携带参数,在jsp页面中使用<jsp:forward /> <jsp:param />
    3.    hidden表单域有什么作用?
        用来记录一些用户不需要关心,但你程序需要关心的东西比如某条数据的主键值. 
    暂时隐藏某个表单字段可以让你的表单变的简洁
    4.    jsp有哪些内置对象?
    Page,request,session,application,exception,config,pageContext,out,
    5.    request的作用有哪些?
    获取客户端传递的参数值
    获取客户端请求头信息
    获取会话
    获取转发对象
    获取servletContext对象
    6.    session有什么作用。
    Session对象类似于一个容器,可以存放任何对象,以供不同页面间共享数据
    Session是记录客户端的状态信息,它是针对http协议的无状态连接的特性而提供的解决方案。
    7.     application有什么作用。
    取得保存的一些全局性的对象信息。
    8.    在jsp中怎样操作page作用域
    特定于 JSP 的一个类型,代表当前的 JSP 页面。pageContext.setAttribute();
    9.    jsp有哪些动作?作用分别是什么?
    <jsp:include /> <jsp:forward /> <jsp:usebean /> <jsp:setProperty /> <jsp:getProperty />
    <jsp:param /> 
    10.    java servlet api中forward() 与redirect()的区别?
    1.    forward客户端请求服务器一次,redirect请求服务器两次
    2.    forward由request对象发出,而redirect由response对象发起
    3.      对于页面跳转来说,forward请求在URL地址栏会显示SERVLET的地址,而redirect显示的是重定向后页面的地址
    4。     由于redirect()是2次请求,因此不能使用request作用域来保存信息
     

    1.    class.forname的作用?为什么要用?
    2.    在oracle大数据量下的分页解决方法?
    3.    mySQl的分页是怎么实现的?
    4.    cookie被禁止后怎样使用session?
    5.    项目开发经历了哪几个阶段?
    6.    谈谈项目的体系统架构:(客户层,表示层)web层,业务层,数据层?
    7.    J2EE规范中的组件技术在项目中用到了哪些?
    8.    TCP/IP通讯和UDP通迅的区别?
    9.    浏览器和WEB服务器是用什么协议通迅的?
    10.    网络通讯中,端口有什么含义。端口的取值范围?
     

     

     

    展开全文
  • Java写一个冒泡排序算法 ? 描述一下链式存储结构? 如何遍历一棵二叉树? 倒排一个LinkedList? 用Java写一个递归遍历目录下面的所有文件? Java基础 接口与抽象类的区别? Java中的异常有哪几类?...
  • Java架构师面试专题系列(含答案),年底福利限时领取! java架构交流 2018-12-31 16:51:08 学习是一份苦差事,这句话真的不是说说而已,真的是你认真学习过,才会懂得,学习是多么的辛苦,这点我深有体会,但是我还是...
  • 1.你认为项目中最重要的过程是那些?分析、设计阶段 尽量找出进度的优先级2.如果给你一个4-6人的team,怎么分配?挑选一技术过硬的人作为我的替补。其它人平均分配任务,每周进行全面的任务...Java编程思想 Java模...
  • 一、Java基础和高级 1.String类为什么是final的。 2.HashMap的源码,实现原理,底层结构。 3.反射中,Class.forName和classloader的区别 4.session和cookie的区别和联系,session的生命周期,多个服务部署时session...
  • 最全架构师面试130

    2020-07-06 10:40:50
    最全架构师面试130
  • java 系统架构师面试

    2020-06-10 23:30:10
    java 系统架构师面试java 系统架构师面试java 系统架构师面试
  • 基础 一、String,StringBuffer,StringBuilder的区别是什么?String为什么是不可变的? 1. String是字符串常量,StringBuffer和StringBuilder是字符串变量。StringBuffer是线程安全的,StringBuilder是非线程安全...
  • 事务的隔离级别有哪些? 这个问题其实问的是数据库的事务隔离级别;它目前有4种,分别是由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。而且,在事务的并发操作中可能会出现...
  • 一、Java基础和高级 String类为什么是final的?答案 HashMap的源码,实现原理、底层结构答案 反射中,Class.forName和classloader的区别?答案 session和cookie的区别和联系,session的生命周期,...
  • JAVA架构师面试题

    2020-04-25 21:13:00
    Java线程的状态 进程和线程的区别,进程间如何通讯,线程间如何通讯 HashMap的数据结构是什么?如何实现的。和HashTable,ConcurrentHashMap的区别 Cookie和Session的区别 索引有什么用?如何...
  • BATjava架构师总结的面试经验,以及各个知识点的讲解 HASHMAP源码分析、JVM底层奥妙、大型网站数据库瓶颈之数据库分库分表方案实践、分布式、RPC底层原理、互联网垂直系统架等等........
1 2 3 4 5 ... 20
收藏数 11,372
精华内容 4,548