概述
目录
Java基础
JVM
计算机网络
设计模式
MySQL
spring
redis
dubbo
zk
mybatis
算法题:
应用
最后说些感想:
Java基础
最常考的:
HashMap、ConcurrentHashMap、ArrayList、LinkedList、String、Stringbuffer、Stringbuilder、Synchronized 、Volatile、AQS、ReentrantLock、线程池。
面过几家大厂,都很喜欢把上面这些常考的知识点进行深挖。所以有源码的最好能看一下源码。Volatile、Synchronized这种要了解一下底层实现。
- 8种基本数据类型和其范围
- string的intern()方法
- String类的底层实现
- string、stringbuffer、stringbuilder的区别
- 自动拆箱、自动装箱
- final关键字
- exception和error的区别
- 运行时异常的举例
- 四种引用类型
- 反射机制
- 实现线程的方法(算上线程池一共四种)
- 线程的状态
- wait()和sleep()的区别
- 线程池参数、拒绝策略、
- 线程池的原理 (先是核心数 超过核心数 进阻塞队列 等…)
- 线程池有几种(最好把参数也说一下)
- AQS(队列同步器)的实现 和内部原理
- volatile的原理:原子性、指令重排、JMM最好都说到
- Synchronized的原理、锁升级
- Synchronized和LOCK区别
- reentrantReadWriteLock相关的知识
- threadLocal的原理(看源码)
- NIO的原理
- 集合类的架构。集合类相关的东西、了解的越多越好。源码吃透了最好。
- hashmap:高频考点。建议看源码,了解的越多越好。
- hashmap负载因子为啥是0.75.
- hashmapput()函数的过程,
- hashmapnode内部类的实现
- HashMap为啥头插法会出现循环
- 某公司还让我手写过hashmap 的 put函数和node内部类。
- concurrentHashmap(1.7和1.8的区别)数据结构
- ArrayList 和LinkedList的区别
- 页面跳转的两种方式(重定向和转发)
- 为什么重写equals一定要重写hashcode?
JVM
- 运行时数据区 或者叫内存模型
- 垃圾回收算法
- 垃圾收集器
- 双亲委派
- OOM问题
计算机网络
网络基础差的可以看一下《网络是怎样连接的》
- http状态码 2** 3** 4** 5**
- TCP和UDP的区别
- 三次握手,四次挥手,为啥是握手三次
- HTTP请求、响应消息的内容,可以举例说明
- DNS
- https的原理(这个被问了好多次)
设计模式
- 说说单例的几种实现方式,
- 饿汉和懒汉模式,哪个是线程安全的(饿汉)
- 单例中双检锁模式怎么实现的
- 观察者模式的思想
- 动态代理模式的实现原理
MySQL
- myisam和Innodb区别
- 事务的定义
- 事务隔离机制
- 索引的数据结构(hash、B+树)两种数据结构的索引使用场景,为什么使用B+树
- 聚簇索引和非聚簇索引
- 索引覆盖
- 索引下推
- 联合索引
- 索引的缺点、设计索引的时候应该注意什么
- 索引优化
- MVCC
- undolog、redolog日志
- 写一个sql实现死锁
spring
因为springcloud没用过没在简历上写,也没人问过
- spring常用注解
- spring中bean的作用域,Singleton和prototype的区别
- spring中有哪些扩展点
- spring如何解决循环依赖(三级缓存)
- springBean的生命周期
- spring IOC AOP
- spring中有哪些设计模式
- spring事务、和spring事务传播机制
- springMVC的原理(就是dispatcerServlet的那个图)
- spring容器怎么感知到注解
- springBoot自动配置
redis
- AOF、RDB。
- 数据类型
- redis大key问题
- 雪崩、穿透、击穿的场景和解决办法。(雪崩解决方法一般都会回答布隆过滤器,然后还会接着问布隆过滤器咋实现的)
- redis慢指令(keys )
- redis分布式锁的实现
- redis为什么是单线程的
- 哨兵模式
- redis的拒绝策略
- redis的过期键删除策略
- redis集群中槽是怎么分配的
- 跳跃表咋实现的
- redis的应用场景
dubbo
- dubbo的组成(Customer、Provider、Monitor、Registry、Container)
- dubbo的协议
- dubbo的分层
- 注册中心挂了可以继续通信吗
- RPC框架的原理
- dubbo负载均衡策略 RandomLoadBalance随机(缺省)、LeastActiveLoadBalance最小活跃数、ConsistentHashLoadBalance一致性hash、RoundRobinLoadBalance轮询
- dubbo配置域生效的优先级
zk
- zk的通知机制
- zk服务器某个节点不可用会发生什么
- Znode
- ZK集群节点数量为什么要是奇数个?
mybatis
经过多次面试发现mybatis问的其实不多
- #{}和${}的区别
- 一级缓存和二级缓存
算法题:
- 最小路径和https://leetcode-cn.com/problems/minimum-path-sum/
- 整数反转https://leetcode-cn.com/problems/reverse-integer/
- 仅仅反转字母https://leetcode-cn.com/problems/reverse-only-letters/
- 快排的思想 (让基准值回到他正确的位置)
应用
- 工作中有没有遇到OOM,OOM的工具
- 如何保证接口的幂等性
- 如何接口限流
- 简单设计一个秒杀系统
- 工作中SQL优化的案列
- 如何设计一个数据库;很发散的一道题,考察的也很全面。索引、数据类型的选用、三范式。数据库相关的会啥就说啥就行了。
- 如何保证redis和MYSQL数据的一致性
最后说些感想:
1.找工作是持久战(自己水平不高,遇到了很多挫折)。
不要轻易放弃,尤其是在今年这样不好的大环境下,更有做好持久战的准备。其实有些坎儿,扛过去了人就上了一个台阶儿。就像很多NBA球员,经历过一次总决赛、拿了次总冠军之后,在下赛季往往能打出更好的表现。一是更自信了,二是经历了挫折的洗礼,人得到了成长。所以在面对挫折实在坚持不下去的时候,告诉自己咬牙再坚持一下。
2.适当拔高简历。
简历是入场券,是获得面试机会的钥匙。没有面试机会,一切都是扯淡。
所以如果你有对自己的评价60分,最开始的时候可以把简历写成80分。80分的简历,大概率面试机会不会少。然后面试官就会拿80分的水准来考你,这样的面试如果运气好过去了,捡到了。
大概率是过不去的。过不去也不怕,至少你知道了一场80分的面试是什么样的,这样面试之后就有了方向,也认识到了自己的不足,按照这个方向学习。总会有达到80分的那一天。反正就是要勇敢些,不要怕面试官的黑脸。
3.接触更多优秀的人。
老东家给力,裁了些校招生,有的直接回老家了,有的卧薪尝胆几个月,最后去了比原来更好的互联网公司。说来也巧,我有两位大学同样离开了校招的公司,但是他们都通过自己的努力找到了更好的公司。有他俩在我之前做榜样,我的动力和信心也增加了不少。我想起在18年我校招的时候,几个同学一起学习、面试,一起总结经验。没有他们的鼓励和陪伴,我现在啥样真的不好说。所以,真的要接触更多优秀的人。
4.人活着脸皮一定要厚啊!
要有一种说干就干的精神。比如不要惧怕任何大厂的面试,不要怕面试官的黑脸。路是走出来的,不是想出来的。有些事筹划着筹划着,就不是你的了,有时候再等等,再等等,汤都没得喝。实践是最好的学习方法,实践和认识是纠缠在一起的。不要害怕实践,不要顾及脸面。
5.持续学习。
首先很多知识都是需要经常复习,且常读能够常新的。很多东西,时常拿出来复习一下,再面试的时候就能够节省很多时间。
大厂都考编程题,编程题一般都是需要日积月累的,LeetCode要日常刷一刷。
最后
以上就是醉熏橘子为你收集整理的2020 社招 JAVA面试题总结的全部内容,希望文章能够帮你解决2020 社招 JAVA面试题总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复