记录自己面试中的面试题

安稳与你 提交于 2019-11-28 16:15:02

最近在找工作,感觉自己太菜了,记录一下面试官出的题,当然有些记不住了。

1、值传递与引用传递

值传递就是有一个变量a,给一个函数传入a的时候,是复制了a的值传入到函数里,所以在函数内部对于此参数的操作是不会反应在函数外面的那个a上的,引用传递则相反,传入的时候是将对象的地址传进去,在函数内操作的和外面的a是同一个对象。

基本类型都是值传递,对象类型都是引用传递。

2、final

final 修饰的变量是引用不可变,不是指向的对象不可变,比如声明final A a = new A();是变量a不能再指向其他对象,但是对象本身还是可以变的。

3、 引用类型

可参考以下文章:

java的四种引用类型

Java引用类型分类以及详解

4、GC

参考:Java垃圾回收(GC)机制详解

5、门票购买的并发问题

锁和队列,一般用队列,JDK自带了一个ConcurrentLinkedQueue,add添加,poll取出,可以将门票编号存到队列中。

这个问题是面试官看我写的项目经验问的,然而那个项目并没有考虑并发的问题。。。。

6、springboot和strus2优劣

这个也是看我的简历问的。首先这完全是两个东西,springboot是一个用于简化配置,快速启动的工具,可以集成各种 

组件。

而strus2是一个基于MVC理念的框架,通常和springmvc对比。

Struts2 的入口是一个Filter即StrutsPreparedAndExcuteFilter ,SpringMvc的入口是一个Servlet即DispatcherServlet(前端控制器)。

Struts2是基于类开发的,传递的参数是通过类的属性传递(属性驱动和模型驱动),所以只能设计成多例。

SpringMvc是基于方法开发,也就是一个url对应一个方法,传递参数是传到方法的形参上面,所以可以是单例模式。

Struts2的配置文件也比较多,总的来说是不如springmvc的,现在基本很少见到Struts2的项目了。

7、SpringMvc的运行流程

参考:一张图理清SpringMVC工作原理

8、整型缓存

参考:Java中整型的缓存机制

9、类加载器怎么加载类,静态代码块什么时候加载

参考:类加载器和类的加载过程

10、一组线程中的一个出现问题,怎么处理

没用过线程组,这个问题把我问的懵了,以为是问业务逻辑如何处理。

参考:线程管理(十一)处理线程组内的不受控制异常

JAVA基础知识之多线程——线程组和未处理异常

线程池中的ThreadGroup坑 

11、对账怎么对的

因为我的项目经验里写了和银行有关的项目,所以问了这个问题。我接触的对账一般是分业务账和资金帐,业务账就是对交易记录,一般是FTP发文件或者发通知,资金帐是FTP发文件,对账一般以银行方为准,商户进行销账和补录,不过也有做过以商户方为准的对账。对账都是按自然天对账,按缴费时间划分。

12、安全框架

13、redis是单线程还是多线程,为什么这么设计

参考:Redis到底是多线程还是单线程?

14、StringBuilder和StringBuffer的区别

参考:StringBuffer与StringBuilder的区别,及实现原理

15、HashMap的迭代,有序的map是哪个

参考:对HashMap迭代的理解

有序的Map集合--LinkedHashMap

16、多线程通信

 参考:JAVA多线程之线程间的通信方式

17、适配器模式,观察者模式

参考:Java IO设计模式(装饰模式与适配器模式)

设计模式(三):观察者模式与发布/订阅模式区别

18、log4j的日志级别,修改输出级别在哪配置

参考:Log4j Threshold属性指定输出等级

19、继承Thread类和实现callable接口的区别

ava并发03:多线程实现三方式:继承Thread类、实现Runnable接口、实现Callable接口

20、mysql单索引和联合索引的区别

MySQL单列索引和组合索引(联合索引)的区别详解

21、mybatis的xml文件中$和#的区别

参考:Mybatis 配置文件xml中$与#的区别

22、sql优化常用的方法

参考:SQL优化的几种方法

sql语句优化的13种方法

23、Spring的IOC和AOP

24、怎么获取指定bean,ApplicationContext怎么获取

参考:Spring手动获取指定Bean

25、redis是做什么的,为什么用redis

参考:Redis 它是什么?它用来做什么?它的优势与短板如何?

Redis提供的持久化机制

这个问题面试官还问了存数据的话mysql也可以,操作快的话java程序也是在内存里,也快,为什么要用redis呢?想了想应该是,和mysql比,吞吐大,速度快,如果存在mysql里,每次查库压力大,所以把修改频率低的数据存在redis里,mysql主要做增删改。和写在程序里比数据不会因为程序的崩溃而丢失,redis还有持久化。

redis主要存的数据应该是修改频率低,数据重要性低,可以再从数据库或其他途径获取,丢失也不怕。

26、webservic

27、poi怎么检验数据保证符合数据库要求,还有什么解析excel的工具

参考:POI实现excel各种验证和导入的思路总结

java解析Excel

我之前那个项目好像是读取一行的数据,然后写了个校验的方法去校验,然后先在临时表中插数据,不报错的话再在主表中插数据。

28、二维码有两套,用的哪个

之前用过google.zxing,面试官问我你用过二维码那你知道二维码有两套,完全 懵逼,唉

分为堆叠式和矩阵式

参考:Java实现二维码制作

29、dubbo 是什么

参考:Dubbo 到底是用来做什么的

30、分布式事务

31、sql,行列转换

参考:数据库表行列转置的实现_Mysql

32、堆栈是什么,可以用来做什么

33、注解是怎么工作的,代理是怎么工作的

34、JS原型链

35、HTTP协议,TCP/IP协议

看了几篇,总结下就是:IP协议是网络层的,用于两端传输数据,通过IP包传输数据,不保证传输一定到达,也不保证传输的顺序,TCP协议给IP包编号,保证顺序,通过三次握手建立连接保证传输到达对方,HTTP协议建立在TCP/IP协议之上,有简单(客户向服务器请求服务时,只需传送请求方法和路径),灵活(可传输多种数据),无状态(前后连接无关),无连接(连接-传输-断开,不保持连接)的特点。

36、reids怎么保证数据一致性

37、怎么实现多重继承

接口和内部类

38、内部类和静态内部类的区别

39、treeset

40、怎么复制bean

41、spring date jpa

42、mysql引擎

43、怎么写springboot那种starter

44、@Enable***注解

45、redis锁

46、tomcat配置

47、怎么保证自己的代码质量

48、list集合求交集并集

49、svn和git的区别

50、cron表达式中*和?的区别

51、并发

52、线程变量

53、volatile

54、常用的starter

55、抓包工具

56、sql优化

57、hashmap为啥不是线程安全的

58、hashmap扩容

59、redis持久化

60、redis存list,存数据调哪个接口

61、spring bean生命周期,回调方法

62、MyBatis缓存

63、索引的类型

64、spring启动过程

65、servlet生命周期

66、springboot原理

67、剔除引用jar包

68、一般默认引用的jar包有哪些

69、怎么指定使用jdk代理

70、spring如何确定bean依赖的加载顺序

71、乐观锁,悲观锁,表锁,行锁

72、es引擎

73、定时任务多点冲突

74、mysql优化,问的不是sql优化,是mysql怎么优化

75、mybatis分页有哪几种

76、@Autowired 与@Resource的区别

77、@Controller和@RestController的区别

78、两份100的数据,求交集

可以放到hashset里,retainAll()方法

79、springboot除了简化依赖之外还有什么功能

80、springboot实现一个切面

81、springboot,线程注解

82、线程的优先级怎么设置

83、dubbo的健康状态怎么看

84、mq的消息补偿

85、怎么排查执行慢的sql

86、怎么排查页面响应慢的问题

87、布隆过滤器,redis,jvm的

88、mybatis批量执行

89、mybatis-plus

90、mybatis的乐观锁和悲观锁

91、springboot发布https接口

92、redis排序

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!