ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

面试题-java

2021-10-29 01:00:44  阅读:202  来源: 互联网

标签:面试题 java synchronized 回答 问题 线程 join 比较


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

问题:“”和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接口和抽象类的区别
回答:

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

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

标签:面试题,java,synchronized,回答,问题,线程,join,比较
来源: https://www.cnblogs.com/bcydme/p/15478443.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有