面试过程:
一面总体上还是围绕Java基础、JVM、并发编程、数据结构等展开。一面结束后很快安排了二面,相对一面,二面和三面从项目入手多数问的是数据库,缓存,分布式架构等问题且更深入,问题比较刨根问底,更加注重对一些技术细节的理解和把握。比如数据库操作,面试官会详细的问你数据库插入和删除一条数据的过程在底层是如何执行的,项目里配置了读写分离,也会比较深入的就实现方法和底层逻辑展开讨论。HR面很愉快,问了一些薪资和职业规划上的问题!
面试问题如下(文末还整理了一些架构面试资料分享):
技术一面(注重问了基础):
自我介绍
常见集合类的区别和适用场景
并发容器了解哪些?
如何判断链表是否有环
平时会用到哪些数据结构?
解决hash冲突的方法有哪些?
讲讲自己对HashMap的理解,以及和Weakhashmap的区别?
concurrentHashMap如何实现
集群服务器 如何application 共享
JAVA网络编程中:BIO、NIO、AIO的区别和联系
jvm内存模型jmm 知道的全讲讲
JAVA的垃圾回收,标记算法和复制算法的区别,用在什么场合?
http和https的区别,http1.x和http2.0的区别,SSL和TSL之间的区别
GC、G1和ZGC的区别
B+树和B树的区别,和红黑树的区别
内存泄漏与内存溢出的区别
session的生命周期是多久
关于Mina框架了解多少?(因为我在项目里用到了Mina,所以提到了这个部分)
技术二面(大多是数据库缓存等):
自我介绍,讲了下项目!
java cas原理
JAVA线程池有哪些参数,如果自己设计一个线程池要考虑哪些问题?
Java的lock的底层实现?
mysql数据库默认存储引擎,有什么优点
MySQL的事务隔离级别,分别解决什么问题。
四个表 记录成绩,每个大约十万条记录,如何找到成绩最好的同学
常见的负载均衡算法有哪些
如果Redis有1亿个key,使用keys命令是否会影响线上服务
Redis的持久化方式,aod和rdb,具体怎么实现,追加日志和备份文件,底层实现原理的话知道么
技术三面(主要是分布式架构):
自我介绍,讲下项目!
请画一个完整大型网站的分布式服务器集群部署图
多个RPC请求进来,服务器怎么处理并发呢
讲一下Redis的哨兵机制
数据库分库分表一般数据量多大才需要?
如何保证数据库与redis缓存一致的
项目中消息队列怎么用的?使用哪些具体业务场景?
JVM相关的分析工具有使用过哪些?具体的性能调优步骤吗?
MySQL的慢sql优化一般如何来做?除此外还有什么方法优化?
线上的服务器监控指标,你认为哪些指标是最需要关注的?为什么?
如何做压测,抗压手段
秒杀模块怎么设计的
HR面:
自我介绍
你怎么评价你之前的3轮面试
你怎么看待你自己,你最大的核心竞争力是什么
未来自己的职业规划
对阿里技术氛围有什么样的理解,用过哪些阿里的开源库
期望的薪资是多少
最后,你有什么想了解的
总结
技术方面,结合自己的体会,总结下面几点:
基础知识必须要扎实,包括语言基础,计算机基础,算法和基本的Linux运维等
设计模式,造*的能力,各种缓存和数据库应用,缓存,中间件技术,高并发和高可用的分布式系统设计
软性指标,包括快速学习,良好的沟通能力,以及对相关行业的了解
面对这么多得技术点同时给大家整理了一这个学习大纲,希望我们一起进步早日成为架构师迎娶白富美;
最后针对于上面的面试问到的知识点我总结出了互联网公司java程序员面试涉及到的绝大部分面试题及答案做成了文档和架构视频资料免费分享给大家(包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术资料),希望能帮助到您面试前的复习且找到一个好的工作,也节省大家在网上搜索资料的时间来学习,也可以关注我一下以后会有更多干货分享。
因为这份资料包含的内容实在是太多了 ,不能够很详细地给大家展示出来全部的内容。需要完整版资料的小伙伴,可以看向下面来获取!
需要完整版资料的小伙伴,可以一键三连,下方获取免费领取方式!