最近在找工作,感觉自己太菜了,记录一下面试官出的题,当然有些记不住了。
1、值传递与引用传递
值传递就是有一个变量a,给一个函数传入a的时候,是复制了a的值传入到函数里,所以在函数内部对于此参数的操作是不会反应在函数外面的那个a上的,引用传递则相反,传入的时候是将对象的地址传进去,在函数内操作的和外面的a是同一个对象。
基本类型都是值传递,对象类型都是引用传递。
2、final
final 修饰的变量是引用不可变,不是指向的对象不可变,比如声明final A a = new A();是变量a不能再指向其他对象,但是对象本身还是可以变的。
3、 引用类型
可参考以下文章:
4、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的运行流程
8、整型缓存
参考:Java中整型的缓存机制
9、类加载器怎么加载类,静态代码块什么时候加载
参考:类加载器和类的加载过程
10、一组线程中的一个出现问题,怎么处理
没用过线程组,这个问题把我问的懵了,以为是问业务逻辑如何处理。
11、对账怎么对的
因为我的项目经验里写了和银行有关的项目,所以问了这个问题。我接触的对账一般是分业务账和资金帐,业务账就是对交易记录,一般是FTP发文件或者发通知,资金帐是FTP发文件,对账一般以银行方为准,商户进行销账和补录,不过也有做过以商户方为准的对账。对账都是按自然天对账,按缴费时间划分。
12、安全框架
13、redis是单线程还是多线程,为什么这么设计
14、StringBuilder和StringBuffer的区别
参考:StringBuffer与StringBuilder的区别,及实现原理
15、HashMap的迭代,有序的map是哪个
16、多线程通信
17、适配器模式,观察者模式
18、log4j的日志级别,修改输出级别在哪配置
19、继承Thread类和实现callable接口的区别
ava并发03:多线程实现三方式:继承Thread类、实现Runnable接口、实现Callable接口
20、mysql单索引和联合索引的区别
21、mybatis的xml文件中$和#的区别
22、sql优化常用的方法
参考:SQL优化的几种方法
23、Spring的IOC和AOP
24、怎么获取指定bean,ApplicationContext怎么获取
25、redis是做什么的,为什么用redis
参考:Redis 它是什么?它用来做什么?它的优势与短板如何?
这个问题面试官还问了存数据的话mysql也可以,操作快的话java程序也是在内存里,也快,为什么要用redis呢?想了想应该是,和mysql比,吞吐大,速度快,如果存在mysql里,每次查库压力大,所以把修改频率低的数据存在redis里,mysql主要做增删改。和写在程序里比数据不会因为程序的崩溃而丢失,redis还有持久化。
redis主要存的数据应该是修改频率低,数据重要性低,可以再从数据库或其他途径获取,丢失也不怕。
26、webservic
27、poi怎么检验数据保证符合数据库要求,还有什么解析excel的工具
我之前那个项目好像是读取一行的数据,然后写了个校验的方法去校验,然后先在临时表中插数据,不报错的话再在主表中插数据。
28、二维码有两套,用的哪个
之前用过google.zxing,面试官问我你用过二维码那你知道二维码有两套,完全 懵逼,唉
分为堆叠式和矩阵式
参考:Java实现二维码制作
29、dubbo 是什么
30、分布式事务
31、sql,行列转换
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排序
来源:https://blog.csdn.net/qq_36956002/article/details/84573429