为什么自己工作做的很努力也做的很不错,但在找工作的时候却得不到认可?为什么自己做了很多东西,但在面试过程中不能很好的表达?为什么面试过程感觉表现不错,但最终却没有拿到心目中的offer?这些究竟是自己的能力不足,还是面试官被蒙蔽了双眼?
近一年来有不少朋友离职或者被迫离职,找工作过程也并不尽如人意,所以起心动念将近十年来对于面试的思考做一整理(主要还是蹭秋招的热度哈哈),对一些大厂的面试题做了一个汇总,希望对大家有所帮助。答案我整理了,但是由于篇幅的原因就不写了(主要是懒),想要答案的小伙伴请点795983544暗号。另外本人整理收藏了20年多家公司面试知识点整理 ,以及各种Java核心知识点免费分享给大家,希望大家喜欢。
一面
Switch数据类型支持哪些 Java有哪些锁?区别在哪?底层如何实现的?为什么非公平锁效率高? Java内存模型 Java内存结构 线程池使用场景及其核心参数说明、拒绝策略(拒绝策略不理想) Threadlocal原理和使用场景(不理想) 实现多线程通讯 Mybatis初始化和执行原理 Spring mvc初始化和执行原理 Springboot如何自定义starter 项目中使用了springcloud哪些组件及其原理 Redis数据类型 Redis淘汰策略 Redis集群方式 Redis中string底层结构(不理想) MQ工作方式 MySQL数据库引擎比较(不理想) 事务隔离级别说明 项目中使用哪些设计模式?(策略,模板,观察者) 批量导出的业务1000个,如何实现(多线程、压缩传输) 什么场景会出现栈溢出 一般怎么优化慢查询 什么情况下会使得索引失效 Redis集群时分布式锁的问题(主节点锁信息未同步至从节点,主宕机)(不理想)
这个考察了基础和实际项目开发中遇到的问题,难度还是有的,只要复习了还是能回答出来的
二面
Redis分布式锁中加锁与解锁的详细细节询问,过期如何续命(不理想) Spring的ApplicationEvent的使用场景 SpringMVC拦截器和过滤器区别(不理想) 一个项目中可以有多个dispatcherServelt吗?为什么?(不理想) SpringAOP涉及到什么设计模式?底层原理 SpringBoot配置文件加载优先级(不理想) SpringBoot启动原理 多层接口传参相同的问题怎么解决(估计是问ThreadLocal)(不理想) Redis集群有哪些方式 MySQL事务隔离级别 MySQL聚簇索引(不理想) 给定业务场景写sql(不理想) 重写和重载的测试题,参数列表相同,只是泛型不同,会不会报错 写一个单例(我写了最简单的饿汉式,但是告诉了人家,其他的实现方式,及如何防止反射反序列化破坏)
说实话可能是一面回答的不错,二面就准备的没那么充分,有的问题没有那么自信,回答的时候磕磕绊绊,差点以为凉了。
三面
ArrayList底层原理 ArrayList扩容、删除、添加原理 线程池核心参数说明 手写一个定时的线程池(不理想) Mysql聚簇索引和非聚簇索引说明(不理想) Java自带的序列化方式(不理想) 项目使用了SpringCloud哪些组件 Eureka属于可用还是一致?为什么 Eureka实现服务治理的原理 Ribbon原理 ZK集群原理 Spring注解生效的原理(AOP底层原理) 给定一个业务场景,手写SQL(不理想) 项目中如何使用策略模式
很不幸,我倒在了这一环节。这个就是注重底层与实战,可能是沟通问题也可能是理解问题,不是很理想,这个都没聊多久就让回去等通知了,我知道自己凉了…
尽管钉钉一面没过,但这是我目前面试最舒服的一次,完全按照简历上的知识去由浅至深面试,没有任何一个大厂就容易的
HashMap底层数据结构和原理 ConcurrentHashMap线程安全的原理 Sync和Lock的区别,底层原理 CAS中ABA如何解决 类加载机制中双亲委派(不理想) ThreadLocal底层原理 Java线程池关键参数及其拒绝策略说明 Jvm内存结构详细阐述 MySQL索引底层结构(不理想) 聚簇索引和非聚簇索引 如何优化索引查询 组合索引的使用场景(不理想) MySQL隔离级别 脏读、幻读的定义 AOP底层原理 JDK动态代理和CGlib动态代理对比,各自底层的实现原理 FactoryBean和BeanFactory的区别 SpringMVC的拦截器和Filter的异同,自己配置过吗?(不理想) Nginx的负载均衡方式有哪些?正向代理和反向代理的区别 RPC框架中服务消费者如何拿到服务提供者的请求信息,各自职责(估计是在问心跳包)(不理想) 注册中心的治理 Hystrix熔断器的工作原理,熔断半开是指什么(不理想) Ribbon使用过吗? Kafka消费者,生产者,分区,topic的关系是什么,消费者与分区的数量的对应关系是什么 分布式事务如何解决的?事务消息和普通消息的区别 BASE理论和CAP理论是指什么 ES中倒排索引和普通索引的区别(不会) Mybatis中二级缓存和一级缓存的区别(我把Mybatis整个流程阐述了一次) Netty中粘包和拆包是指什么? TCP中为什么握手是三次而挥手是四次?(不理想)
先是跟人事聊了十几分钟,主要是对自己的背景做一些了解,感觉没问题的话等了五分钟就开始技术面了。
用过什么设计模式?描述一下场景 SpringBean生命周期 事务的原理 Spring声明式事务为什么能每次拿到相同的connection(估计是在问ThreadLocal)(不理想) Springboot的starter组件的结构是什么样的 HashMap1.7和1.8的区别在哪 Sync和ReentrantLock的区别 公平锁和非公平锁的区别 给了一个实际出现线程安全的场景,判断哪些操作会出现阻塞(不理想,没理解问题) JVM内存结构的介绍 垃圾回收算法有哪些?重点说说复制算法 常用的垃圾回事器有哪些?CMS的原理阐述一下 Netty使用过吗?讲下原理 粘包和拆包的解决方案有哪些? 使用过哪些Redis的数据结构 MQ如何解决分布式事务 消息幂等性如何解决 消息顺序消费如何解决,哪些MQ有这个特性 ThreadLocal的原理(不理想) Redis实现分布式锁中,过期时间如何设置的(估计是在问NX和PX如何保持一致性)(不理想) 线程池有哪些参数是自己用过的,具体的使用场景(不理想) 匿名内部类使用外部变量为什么必须是final修饰的(不理想) 一条TCP连接上可以发多少个HTTP请求(不知道) 看一段代码(SpringAOP使得this失效) 手写消费者和生产者(不理想)
不出意外我又凉了,剩下的大厂面试我就不去了。毕竟是试水,我已经被虐得体无完肤,没必要再自残了,今年竞争激烈要求也严了,老老实实找个新工作,等着来年再战!
熟悉常用设计模式:策略、责任链、单例、装饰者、代理、观察者、适配器、外观/门面 研究过Mybatis3源码,熟悉sqlsession执行流程、熟悉一级缓存、二级缓存原理 研究过Spring5注解方式启动Spring的源码,熟悉Springbean生命周期、SpringAOP底层原理、Spring事务底层原理、Spring循环依赖解决的原理 研究过SpringMVC5的源码,可手动仿真SpringMVC框架 研究过Springboot2的启动源码,熟悉Springboot核心设计理念,可自定义starter组件,熟悉@SpringBootApplication底层原理 熟悉Java8新特性 熟悉常用集合(ArrayList、LinkedList、HashMap1.7、HashMap1.8、ConcurrentHashMap1.7、ConcurrentHashMap1.8)原理,并研究过源码 可手写二叉树、了解红黑树旋转变色规则 熟悉Nginx负载均衡、动静分离、反向代理、静态文件压缩原理 了解网站跨域问题及其相应解决方案 了解Nginx+Lvs+Keep-alive实现高可用的原理 熟悉多线程(通讯、锁,CAS机制)、Java内存模型,可手写Java线程池 熟悉Java内存结构,了解常用垃圾回收算法、垃圾回收器以及内存溢出和内存泄漏等问题 熟悉Zookeeper使用,了解Zookeeper工作原理,分布式锁原理、分布式集群原理、选举策略、数据最终一致性原理。 了解MySQL中的事务隔离级别和常见的锁(共享、排它、意向、记录、间隙、临键、行锁、表锁等) 研究过Tomcat8底层源码,可在微服务架构下优化Tomcat8 熟悉Netty框架,了解BIO、NIO、TCP/UDP原理,了解OSI七层网络模型,了解请求粘包、拆包原因和解决方案,了解序列化机制。 熟悉SpringCloud框架,了解服务治理、服务注册发现、服务降级、熔断、隔离等Hystrix服务保护机制的原理,熟悉Ribbon负载均衡、Config配置中心、Zuul网关、Swagger接口调试 熟悉Redis淘汰策略、事务、持久化机制、分布式锁、单线程高效、自动过期、与MySQL保持一致性等原理 熟悉Redis穿透、击穿、雪崩、集群、主从复制、哨兵选举、cluster分片、动态扩容、缩容、布隆过滤器等原理 熟悉常用消息队列RabbitMQ/Kafka/RocketMQ,了解其解决分布式事务,消息幂等,顺序消费,事务消息以及常用工作方式等原理
互联网大厂比较喜欢的人才特点:对技术有热情,强硬的技术基础实力;主动,善于团队协作,善于总结思考。无论是哪家公司,都很重视高并发高可用技术,重视基础,所以千万别小看任何知识。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。
另外想要面试答案的小伙伴请点击1065653031 暗号自行领取,本人还整理收藏了20年多家公司面试知识点以及各种技术点整理 下面有部分截图希望能对大家有所帮助。