面试宝典

JAVA面试题

​ 每年的3,4月份都有一波离职风潮,但是对于许多工作一两年的同学,头一次跳槽没有多少经验,对是市场上公司面试/笔试范围不清楚,所以小弟将找工作中遇到的笔试范围以及一些让人头疼的面试题梳理出来,大家完全可以按照该范围进行复习。其中有一些本人精选的优质作者的博客链接也挂在下面。如有遗漏,烦请大家指出。

JAVA基础

一:java8种基本类型,几位,默认值,以及他们的引用类型

种类字节数(每个字节8位)默认值引用类型
byte1 / 8位0Byte
short2 / 16位0Short
int4 / 32位0Integer
long8 / 64位0LLong
float4 / 32位0.0fFloat
double8 / 64位0.0dDouble
char2 / 16位‘u0000’Character
boolean这个特殊只有1位falseBoolean

​ ps: 遇到两个有趣的题:

​ 1:int a = 100;

​ Integer b = 100;

​ 问 a == b 是否返回true。答案是true; 详情请参考:https://blog.csdn.net/xingkongdeasi/article/details/79618421

​ 2:0.1*2 = 0.2这个等式是否成了?答案是不成立。详情请参考:https://blog.csdn.net/qq_40805231/article/details/99551454

​ 没必要深看,只要知道在java中0.1是个四舍五入的值,实际上是0.100000002,它乘以2会得到0.200000004,四舍五入之后虽然是0.2,但是上面这个等式不成立。

二:String

​ 基本上都问String a = new String(“hello world”),创建了几个对象?

​ String,Stringbuffer,Stringbuilder的区别,请参考https://www.cnblogs.com/kingofjava/p/10761653.html

​ 常用的String的API函数说五六个就可以,如substring之类的。

​ 为什么String要设置成不可变?https://www.cnblogs.com/AmyZheng/p/10594339.html

三:面向对象

​ JAVA的特性:封装,继承,抽象,多态。可以参考这个:https://www.cnblogs.com/houqx/p/10223739.html

​ JAVA修饰符:https://www.runoob.com/java/java-modifier-types.html

​ 还有一些关键字使用场景:synchronized,volatile

​ 对象序列化,反射机制,创建对象有几种方式(new,序列化,克隆,反射)

​ 接口和的区别(interface和abstract class)

四:jvm(绝大多数会问)

​ jvm内存模型(总共五块,每一块作用),GC,CMS,G1,线上故障分析。https://baijiahao.baidu.com/s?id=1632503816780923946&wfr=spider&for=pc

​ 堆和栈区别

​ 类的加载过程(可能会问到双亲委派知识点)

五:常用的数据结构(重要,重要,重要)

​ 只需要看下List(ArrayList,LinkList),Set,HashMap,Hashtable,尤其主意他们之间的差别。

​ 面试题:说一下ArrayList,LinkList,Set的异同?

​ 说一下HashMap底层结构(数组+链表+红黑树),存放对象的过程(一定要讲扩 容机制)。

​ HashMap和HashTable的区别。

​ 遍历这些数据结构的方式(普通for循环,foreach,迭代器,stream流),这个百度

六:算法(不排除让你手写)

​ 冒泡排序,选择排序,插入排序,递归(斐波拉契数列,遍历文件夹)。

七:多线程

​ 线程的几种状态,以及各个状态可以用那种方法进行切换。请参考https://www.jianshu.com/p/979ba2f919e3

​ 创建线程的方式(4种)https://blog.csdn.net/weixin_41891854/article/details/81265772

​ 一些方法:start()和run()区别,notify()和notifyAll()区别

​ 为什么wait(),notify()要放到synchronized代码块里

八:异常

​ 常见异常有哪些:空指针,ClassNotFound,数组下标越界,IO异常等

​ RuntimeException和error区别:https://blog.csdn.net/qq_29229567/article/details/80773970

​ 关键字try,catch,throws,throw.

九:常用设计模式

​ 单例模式

​ 模板模式

​ 观察者模式

​ 策略模式

​ 工厂模式

十:IO类型

​ BIO,NIO,AIO的区别

​ 字节流,字符流操作(多出现在笔试题,文件拷贝之类)

数据库

一:基本知识

​ 数据库三范式。

​ 数据库字段类型,适合存放什么类型数据。

​ 分页查询(mysql和oracle分页不一样)。

​ DDL和DML区别

​ 视图和表区别

二:事务隔离级别(mysql有四种,oracle有两种)

​ mysql:读未提交,读已提交,可重复读(默认隔离级别),串行读

​ oracle:读已提交(默认隔离级别),串行读。

​ 我们支付中心和清分中心现在默认使用数据库隔离级别(oracle的读已提交),还要注意一下代码中事务的传播性。

​ 注意各个隔离级别对脏读,幻读,重复读的限制。

三:索引(重要,重要,重要)

​ 有哪几种索引?注意他们的不同点(那些索引会触发回表操作)

​ 什么时候会导致索引失效?

​ 联合索引(三个字段组成,A,B,C),查询顺序那些会导致索引断开。

​ 如何合理的建立索引

四:分析sql执行

​ 一般这一步都是问数据库优化,可以从sql语句格式,有没有使用索引这两个方面回答。

五:分库分表(多次被问到)

​ 垂直拆分,水平拆分。数据量大数据库怎么设计

分布式系统

一:基础知识

​ spring,spring boot,spring cloud的区别。

​ 常用的微服务组件:网关(zuul),注册中心(eureka),负载均衡(Ribbon),实例调用(FeignClient),熔断(Hystrix),请参考:https://www.cnblogs.com/findbetterme/p/11195011.html

​ 有可能问到zookeeper和dubbo

​ 常用注解,有时会问RestController和Controller区别

​ 两个系统之间调用:我们用的feignClient调用,有空的话可以看下RPC框架

二:mybaits

​ mybaits和hibernate的区别

​ $和#的区别

​ mybaits的执行过程

三:rabbitmq

​ 在项目中那些地方用到rabbitmq

​ rabbitmq的作用(异步,解耦,消峰),到时候举些例子。

​ rabbitmq的使用(主要是交换机这一块)可以参考:https://www.sohu.com/a/327119472_418879

​ 怎样保证数据不丢失:生产者开始事务,rabbitmq开启持久化,消费者手动应答。有时会问道如果两个系统 数据不一致怎么处理。

​ 如果rabbitmq有大量消息积压怎么处理:https://blog.csdn.net/u013231917/article/details/100103321

四:redis

​ redis基本数据类型(String,list,hashmap,set,zset)和各自应用场景

​ 系统中有哪些地方用到了redis(订单缓存,分布式锁,分布式锁下等幂处理)

​ redis集群部署方案(主从复制,哨兵,Cluster):https://www.cnblogs.com/51life/p/10233340.html

​ redis缓存雪崩,缓存穿透,缓存预热。https://blog.csdn.net/deoppressoliber/article/details/98773492

​ 如何保持redis和数据库中数据一致:https://blog.csdn.net/gly1256288307/article/details/88739612

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值