2020 社招 JAVA面试题总结

目录

 

 

 

Java基础

JVM

计算机网络

设计模式

MySQL

spring

redis

dubbo

zk

mybatis

算法题:

应用

最后说些感想:


 

 

Java基础

最常考的:

HashMap、ConcurrentHashMap、ArrayList、LinkedList、String、Stringbuffer、Stringbuilder、Synchronized 、Volatile、AQS、ReentrantLock、线程池。

面过几家大厂,都很喜欢把上面这些常考的知识点进行深挖。所以有源码的最好能看一下源码。Volatile、Synchronized这种要了解一下底层实现。

 

  1. 8种基本数据类型和其范围
  2. string的intern()方法
  3. String类的底层实现
  4. string、stringbuffer、stringbuilder的区别
  5. 自动拆箱、自动装箱
  6. final关键字
  7. exception和error的区别
  8. 运行时异常的举例
  9. 四种引用类型
  10. 反射机制
  11. 实现线程的方法(算上线程池一共四种)
  12. 线程的状态
  13. wait()和sleep()的区别
  14. 线程池参数、拒绝策略、
  15. 线程池的原理 (先是核心数 超过核心数 进阻塞队列 等...)
  16. 线程池有几种(最好把参数也说一下)
  17. AQS(队列同步器)的实现 和内部原理
  18. volatile的原理:原子性、指令重排、JMM最好都说到
  19. Synchronized的原理、锁升级
  20. Synchronized和LOCK区别
  21. reentrantReadWriteLock相关的知识
  22. threadLocal的原理(看源码)
  23. NIO的原理
  24. 集合类的架构。集合类相关的东西、了解的越多越好。源码吃透了最好。
  25. hashmap:高频考点。建议看源码,了解的越多越好。
  26. hashmap 负载因子为啥是0.75.
  27. hashmap put()函数的过程,
  28. hashmap node内部类的实现
  29. HashMap为啥头插法会出现循环
  30. 某公司还让我手写过hashmap 的 put函数和node内部类。
  31. concurrentHashmap(1.7和1.8的区别)数据结构
  32. ArrayList 和LinkedList的区别
  33. 页面跳转的两种方式(重定向和转发)
  34. 为什么重写equals一定要重写hashcode? 

 

JVM

 

  1. 运行时数据区 或者叫内存模型
  2. 垃圾回收算法
  3. 垃圾收集器
  4. 双亲委派
  5. OOM问题

 

计算机网络

 

网络基础差的可以看一下《网络是怎样连接的》

  1. http状态码 2** 3** 4** 5** 
  2. TCP和UDP的区别
  3. 三次握手,四次挥手,为啥是握手三次
  4. HTTP请求、响应消息的内容,可以举例说明
  5. DNS
  6. https的原理(这个被问了好多次)

 

设计模式

 

  1. 说说单例的几种实现方式,
  2. 饿汉和懒汉模式,哪个是线程安全的(饿汉)
  3. 单例中双检锁模式怎么实现的
  4. 观察者模式的思想
  5. 动态代理模式的实现原理

 

MySQL
 

  1. myisam和Innodb区别
  2. 事务的定义
  3. 事务隔离机制
  4. 索引的数据结构(hash、B+树)两种数据结构的索引使用场景,为什么使用B+树
  5. 聚簇索引和非聚簇索引
  6. 索引覆盖
  7. 索引下推
  8. 联合索引
  9. 索引的缺点、设计索引的时候应该注意什么
  10. 索引优化
  11. MVCC
  12. undolog、redolog日志
  13. 写一个sql实现死锁

 

 

 

spring

因为springcloud没用过没在简历上写,也没人问过

  1. spring常用注解
  2. spring中bean的作用域,Singleton和prototype的区别
  3. spring中有哪些扩展点
  4. spring如何解决循环依赖(三级缓存)
  5. springBean的生命周期
  6. spring IOC AOP
  7. spring中有哪些设计模式
  8. spring事务、和spring事务传播机制
  9. springMVC的原理(就是dispatcerServlet的那个图)
  10. spring容器怎么感知到注解
  11. springBoot自动配置

 

redis

 

  1. AOF、RDB。
  2. 数据类型
  3. redis大key问题
  4. 雪崩、穿透、击穿的场景和解决办法。(雪崩解决方法一般都会回答布隆过滤器,然后还会接着问布隆过滤器咋实现的)
  5. redis慢指令(keys )
  6. redis分布式锁的实现 
  7. redis为什么是单线程的
  8. 哨兵模式
  9. redis的拒绝策略
  10. redis的过期键删除策略
  11. redis集群中槽是怎么分配的
  12. 跳跃表咋实现的
  13. redis的应用场景

 

dubbo

 

  1. dubbo的组成(Customer、Provider、Monitor、Registry、Container)
  2. dubbo的协议
  3. dubbo的分层
  4. 注册中心挂了可以继续通信吗
  5. RPC框架的原理
  6. dubbo负载均衡策略                                                                                                                                                          RandomLoadBalance随机(缺省)、LeastActiveLoadBalance最小活跃数、ConsistentHashLoadBalance一致性hash、RoundRobinLoadBalance轮询
  7. dubbo配置域生效的优先级

 

zk

 

  1. zk的通知机制
  2. zk服务器某个节点不可用会发生什么
  3. Znode
  4. ZK集群节点数量为什么要是奇数个?

 

mybatis

经过多次面试发现mybatis问的其实不多

  1. #{}和${}的区别
  2. 一级缓存和二级缓存

 

算法题:

  1. 最小路径和 https://leetcode-cn.com/problems/minimum-path-sum/
  2. 整数反转 https://leetcode-cn.com/problems/reverse-integer/
  3. 仅仅反转字母 https://leetcode-cn.com/problems/reverse-only-letters/
  4. 快排的思想 (让基准值回到他正确的位置)

 

应用

 

  1. 工作中有没有遇到OOM,OOM的工具 
  2. 如何保证接口的幂等性
  3. 如何接口限流
  4. 简单设计一个秒杀系统
  5. 工作中SQL优化的案列
  6. 如何设计一个数据库;很发散的一道题,考察的也很全面。索引、数据类型的选用、三范式。数据库相关的会啥就说啥就行了。
  7. 如何保证redis和MYSQL数据的一致性

 

最后说些感想:

1.找工作是持久战(自己水平不高,遇到了很多挫折)。

不要轻易放弃,尤其是在今年这样不好的大环境下,更有做好持久战的准备。其实有些坎儿,扛过去了人就上了一个台阶儿。就像很多NBA球员,经历过一次总决赛、拿了次总冠军之后,在下赛季往往能打出更好的表现。一是更自信了,二是经历了挫折的洗礼,人得到了成长。所以在面对挫折实在坚持不下去的时候,告诉自己咬牙再坚持一下。
 

2.适当拔高简历。

简历是入场券,是获得面试机会的钥匙。没有面试机会,一切都是扯淡。

所以如果你有对自己的评价60分,最开始的时候可以把简历写成80分。80分的简历,大概率面试机会不会少。然后面试官就会拿80分的水准来考你,这样的面试如果运气好过去了,捡到了。

大概率是过不去的。过不去也不怕,至少你知道了一场80分的面试是什么样的,这样面试之后就有了方向,也认识到了自己的不足,按照这个方向学习。总会有达到80分的那一天。反正就是要勇敢些,不要怕面试官的黑脸。

3.接触更多优秀的人。

老东家给力,裁了些校招生,有的直接回老家了,有的卧薪尝胆几个月,最后去了比原来更好的互联网公司。说来也巧,我有两位大学同样离开了校招的公司,但是他们都通过自己的努力找到了更好的公司。有他俩在我之前做榜样,我的动力和信心也增加了不少。我想起在18年我校招的时候,几个同学一起学习、面试,一起总结经验。没有他们的鼓励和陪伴,我现在啥样真的不好说。所以,真的要接触更多优秀的人。

4.人活着脸皮一定要厚啊!

要有一种说干就干的精神。比如不要惧怕任何大厂的面试,不要怕面试官的黑脸。路是走出来的,不是想出来的。有些事筹划着筹划着,就不是你的了,有时候再等等,再等等,汤都没得喝。实践是最好的学习方法,实践和认识是纠缠在一起的。不要害怕实践,不要顾及脸面。

5.持续学习。

首先很多知识都是需要经常复习,且常读能够常新的。很多东西,时常拿出来复习一下,再面试的时候就能够节省很多时间。

大厂都考编程题,编程题一般都是需要日积月累的,LeetCode要日常刷一刷。

 

你可能感兴趣的:(2020 社招 JAVA面试题总结)