面试题-java

机会是留给有准备的人的。

问题:“”和equse的区别
回答:"
"可以看成是一个运算符,在比较的类型是基本类型的时候,即使数据类型不同,只要值相等返回的是true,如果比较的是引用类型,可以看作比较是这两个数在内存地址;equse()方法是Object类中的方法,底层代码就是返回用==比较的结果,但是所有类都是继承Object类,Object类中的equals()方法是没有用final关键词的,所有使用这个方法的实现要确认这个equals有没有重写。在实际使用中,equals()在比较字符串类型的时候,是比较值在内存地址中是否相当,在对象之间得比较,是比较值是否相同。有一个开发规约:所有相同类型的包装类对象之间值得比较,要求全部使用equals方法来比较。

问题:Spring的理解
回答:spring的核心概念:IOC和AOP。
IOC是一种编程思想,实现模块之间的解耦,作用就是实现对于创建,维护,销毁的生命周期,IOC将这些交给spring来管理,就是控制反转。
AOP面向切面编程,系统中许多不相干的类的方法,在这份方法在加入某个功能代码,比如日志,权限,实现横切的关注点与影响对象的解耦。
spring作为一个比较大的工厂类,特点就是基于配置,在配置文件中通过bean元素来创建实例对象。
同时大量的配置文件对于开发速度有一定的影响,相比较springboot就优化了配置解决了这个问题。

问题:常用的Linux开发命令
回答: cd切换目录,exit退出shell,file判断文件类型,cmp比较两个文件的异同,mv修改文件名,移动文件位置。。。。。

问题:常用的数据集合
回答:List列表,Set集合,工具类:迭代器,枚举类,数组等

问题:多线程并发
回答:进程是最小的操作单位,一个线程下至少会有一个进程,线程作为最小的单位被CPU分配。
多线程并发可以说是在同一时间有多个线程在进行,不用的线程如果在同时调用同一个数据时候,可能会存在数据不准确的问题,设计一个线程安全问题,
对于线程安全,可以创建锁synchronized
synchronized 的内存语义:
把在synchronized块内使用到的变量从线程的工作内存中清除,这样在synchronized块内使用到该变量时就不会从线程的工作内存中获取,而是直接从主内存中获取。
退出synchronized块的内存语义是把在synchronized块内对共享变量的修改刷新到主内存。会造成上下文切换的开销,独占锁,降低并发性

问题:redis缓存数据库
回答:redis缓存是为了避免频繁调用一些不变都数据。
redis是一个key-value型 nosql数据库,,将常用的数据存在缓存中,随调随用,
执行的是单线程操作,这样速度是非常快的,
支持多种数据类型,列表,集合,哈希等
操作是原子型的,这样两个客户执行了操作得到的都是最新的数据

问题:分布式
回答:提升性能和并发,操作被分发到不同的分片,相互独立;提升系统的可用性,即使部分分片不能用,其他分片不会受到影响;
网络连接的多个组件,交换信息协同合作,

问题:kafka消息队列
回答:同时处理在线和离线处理海量数据的消息排发系统,
高分布式,高吞吐量,高拓展性的消息队列系统,主要用在日志收集系统中,稳定和高效率,

问题:MYSQL优化
回答:
(1)尽量不用*,而是具体到每个字段,
(2)查询结果只有一条或求最大最小,用到limit 1,
(3)where条件中使用or语句会造成全表扫描,
(4)like语句需要优化,把%写在后面
(5)避免在索引上使用MYSQL的内置函数
(6)避免在where子句上对对字段进行表达式的操作,会导致系统放弃索引而进行全表的扫描
(7)关联查询:inner join ,left join ,right join ,优先使用inner join ,使用左连接时候,左表要尽量小
(8)where语句中要避免使用!=操作符,会导致数据库放弃索引进行全表扫描。
(9)插入数据过多,就考虑批量插入。

问题:左连接和右连接的区别
左连接必要要左边表中存在数据,才会被查询出来,右边表若不存在数据,不能被查询出来,右连接就是恰好相反的。
为什么使用inner join ,inner join是指只要表中存在一个匹配的数据,就可以将数据查询出来。

问题:如何创建索引
回答:通过创建语句:CREATE INDEX index_name ON table(column(length)),可以大大提高查询速度,但是不适合增删改操作,在实际使用中,会也必须对索引进行操作,一般会考虑对查询语句进行优化。

问题:spring bean的生命周期
回答:
实例化
属性赋值
初始化
销毁

问题:java接口和抽象类的区别
回答:

问题:线程的生命周期
回答:新建-就绪-运行-死亡-阻塞

问题:设计模式
回答:工厂模式,单例模式,抽象工厂模式,创建者模式,原型模式,

上一篇:设计模式入门(三):Observer模式


下一篇:synchronized实现原理与应用