软件公司面试总结

article/2025/10/2 17:09:28

文章目录

      • 面试1
      • 面试2
      • 面试3
      • 面试4
      • 面试5
      • 面试6

面试1

1、你先做个简单的自我介绍吧
我叫张三,2015年在重庆邮电大学毕业。我读的专业是电子信息。工作已经快5年了。
我上家公司的主营业务是在柬埔寨做移动支付钱包。
最近做的一个项目是聚合支付的项目,主要的功能是为了让柬埔寨当地的华人能使用微信、支付宝钱包做支付,就做了一个聚合码这样的功能。负责的主要的模块是一个渠道的模块(对接外部渠道),比如支付宝、微信。然后,就提供一个统一的接口给支付交易那边使用。这个项目上线后我也对它做了一些优化。
再往前的一个项目是一个出入金的项目,这个项目主要的功能是提供一些充值、提现的服务,给当地的人可以去我们公司开设的一个现金网点,用现金做充值提现,先充进钱包里面,做线上的消费,我负责的模块就是一个充值服务,主要是对整个充值流程的控制,和账户,还有订单那边做交互。

2、简单介绍下Spring Bean的注入过程

3、简单介绍下Java8有哪些新特性?
1)语法上面主要就是lambda表达式,它可以用那个函数式进行函数式编程,函数式接口的意思就是它这个接口只有一个方法
2)还有一些流的操作,像Stream API,它可以使编程语义更清晰。比如:有一个filter功能就可以把不符合要求的数据过滤掉
3)它对一些数据结构进行了优化,像ConcurrentHashMap,它底层实现改成了红黑树

分析:
面试官问的是有哪些新特性,回答的是一些优化。

4、刚刚有提到过流式处理,你有了解过它的性能么?比如:Stream流的操作,对比像foreach或者基本的for循环,有没有在效率上进行优化?

5、你能跟我讲一下synchronized和lock锁它底层实现的原理吗?
synchronized是一个语义级的支持,在一个对象头里面,它有一个Mark Word的这么一个标记去记录他的锁。lock显示锁,它底层是一个AQS,它是一个双向链表的先进先出的队列,它当前持有锁的线程就是一个对头,然后它释放出来职还,就会利用一个自旋的操作,就让下一个线程作为对头。

6、synchronized和lock分别是什么层面的呢?是jdk层面还是jvm层面?
sychronized是jvm层面的,lock是jdk层面的

7、刚刚提到synchronized,你有去了解过它锁方法,锁对象头,锁代码块分别是怎么实现的吗?

8、你了解synchronized锁升级过程吗?

9、刚刚提到lock,CAS你能给我简单的介绍一下吗?
CAS,它的意思就是比较并交换

10、你有在开发过程中有实际的一些应用吗?有没有用到乐观锁?
我在更新数据库的时候,如果数据库用的是一个乐观锁的话,我也用一个自旋的操作,就把它更新到成功为止

11、自旋的话,会不会效率很低?比如说,一直取不到这个锁的话,那可能会造成一些线程阻塞。或者说,在高并发的场景下,会影响到效率?
并发高的话,不适合用自旋,这个时候更适合用悲观锁

12、关于线程池,把你知道的知识点跟我说一下
工作流程:
1)先提交进来
2)进入核心池里面
3)如果线程数大于coreSize,就会进入一个阻塞队列
4)阻塞队列满了之后,就会新建一个线程,进入最大的池里面
5)当线程数超出maxSize的时候,就会执行一个拒绝策略。jdk自带的拒绝策略有4种,一种是直接丢弃,一种是抛异常,一种是有调用者在调用者的线程执行,一种就是丢弃阻塞队列里面等待时间最长的一个线程

13、你了解JVM调优的基本步骤吗?
如果生产环境上面发生oom异常,首先要判断它是在堆里面发生的,还是在元空间里面。还有一种可能就是gc效率过低,就是用了80%的时间,但是清除的垃圾都达不到2%,效率过低,主要是针对这种情况(进行调优)。如果是堆空间不够,就要考虑是不是有内存溢出的现象,可以通过拿到当时的内存快照,用工具(jmap),然后就用MAT工具来分析,是不是内存泄漏,有一些对象,它们本来是没有,应该被gc掉,但是它们还保留着,如果是内存泄漏的情况就改代码,如果不是的话,就考虑增大一下堆内存。

14、现在遇上一个线上cpu占用率100%的问题,你怎么排查这个问题?
1)先用top查出是哪些进程占用的cpu最高
2)找到占用cpu最高的进程后,用命令找到里面占用率最高的线程,然后,转换为16进制的,然后再用jstack,打出它具体的堆栈,定位到具体的哪一行代码。

15、在linux上面查看进程的命令?

16、一般怎么去优化mysql的查询?
一般就用expain执行计划,看看执行的各方面的数据。如果是索引没用的的话,就建索引。

17、mysql里面,索引有几种类型?
一般有两种,hash和B+树

18、我们为什么用B+树,不用其他的呢?比如平衡二叉树,红黑树这些。
不用平衡二叉树,是因为平衡二叉树的树高太高了。如果数据是放在内存的话,其实用
AVL也没问题,但是如果树高很高的话它就频繁访问硬盘,IO次数会多一点。

19、树高低也有B树,为什么用B+?

20、能跟我说一下MyISAM和InnoDB的区别吗?
1)MyISAM用的是非聚集索引,它的索引直接指向的是数据项
2)InnoDB用的是追溯索引,它的索引直接指向主键索引,主键索引查取数据项
3)InnoDB支持redo log日志
4)InnoDB支持事务
5)InnoDB支持行锁,MyISAM只支持表锁

21、开发过程种技术选型的时候,这么多缓存中间件(Memcache, MongoDB),为什么选择Redis?

22、Redis为什么这么快?
1)因为数据是在内存中的嘛,所以读写(IO)比较快
2)另外,Redis使用的IO模型是异步非阻塞

23、如果断电了,Redis的数据会不会丢失?
Redis支持持久化,就是把数据持久化到硬盘里面。持久化有两种方式,一种是RDB,每隔一段时间会把内存快照存到硬盘里面,还有一种是AOF,就是用命令将内容序列化到文件里面去,如果断电的话,可以根据AOF写的文件来恢复数据。一般生产上就是RDB和AOF同时开启的,两者有优点缺点,AOF备份的数据会比较全一点,但是恢复起来比较慢,RDB虽然说数据少一点,但是恢复挺快的,拿上去就直接能用了,所以说一般在应急情况下都是会先用RDB的,然后再用AOF去追加那些不全的数据

24、你了解过Redis的集群么?

25、你是怎么理解缓存击穿和缓存穿透的?

26、Spring的优点有哪些?
1)没有侵入性(AOP)
2)把对象的依赖管理起来(IOC)

27、跟我讲下dubbo的调用链路(从生产者到消费者的整个链路)

分析:
1)服务暴露的过程
2)然后调用过程中其实还有1个Monitor监视器什么的
3)在启动的时候,还有一个Containner容器,跟Spring Bean怎么融合的

28、除了单例和工厂,你了解哪些设计模式?
项目中比较常用的:
1)策略模式,它的类结构是有一个Context,它是聚合的一个抽象的策略接口,然后,还有很多个具体的策略实现类来实现它。我主要是把它用在渠道这方面,比如,渠道下单,有多个渠道,要写的报文格式,还有,数据结构都是不一样的,然后就可以用不同的策略
2)还有一个是状态模式,主要是用来进行状态流转的控制,它的类结构和策略模式也有点像,很相似,也是一个Context(它持有的),它聚合的是一个抽象的状态接口,然后,下面也有很多状态的实现类,具体实现类。
比较:
这两个模式关注点不太一样,策略模式主要关注的是对一个功能的不同实现算法(方法),并且可以动态的去切换。状态模式,它主要是关注的一个状态的流转,会从A状态B状态他们之间的是什么流程

29、金融支付的场景,怎么保证幂等?
1)数据库层面要做一个唯一索引
2)在访问量稍微大的情况下,可以考虑把一些需要做幂等的数据先存到缓存里面

30、存到缓存里面怎么去做的?
比如:订单过来的时候,可以把那个订单号放到redis里面,下一笔订单来之后先去Redis里面检查是否存在此订单,然后就过站

31、按道理来说会出现各种场景,就是像退款、下单、支付、发货等都是一个订单号操作的,你怎么能保证是一个场景还是多个场景在这里进行操作的?因为它完全可能是支付成功后,商家马上就来接收到这笔订单之后马上发货什么的。
答:刚刚主要是针对新建订单的场景

32、怎么避免重复消费(重复支付)?
免重复支付,目前的做法就是从数据库里面查一下订单的状态,然后用状态机的状态(刚刚说的状态模式),如果是已经完成了,它已经到了一个状态了,就不会对这边订单做修改了。如果是它还是处理中的话,那就证明它还可以流向失败还有成功的状态。

33、像这样一个场景,就是刚刚你说去查一下嘛,如果我去数据库查到了,然后返回过来的途中,其实它的状态应该还是未支付的,但其实有一笔支付的已经过来了,然后这个时候同时过来两笔,按道理来说这两笔可能都会加上去,对不对?
答:如果是这种情况的话,可以加一个分布式锁

34、说一下分布式锁你是怎么实现的?
分布式锁主要是控制我们平时所谓的线程的共享资源的修改,分布式锁就是控制一个进程,平时的话我们就用Redis的setnx(原子性操作)

35、有试过用ZK(zookeeper)吗?

参考资料
[01] 利用jmap和MAT等工具查看JVM运行时堆内存
[02] HashTable和HashMap的区别详解
[03] Redis乐观锁解决高并发抢红包的问题
[04] 使用Redis和Lua的原子性实现抢红包功能
[05] 一次生产 CPU 100% 排查优化实践
[06] 一份十分完整的CPU 100%排查优化指南

小结
java程序员面试,最常见的套路永远是问:你用过多少中间件和库?
然后又问:这些中间件和库的特性了解多少?
再高级一点的就会问:这些中间件和库特性原理是什么?
作为真正有能力解决问题的开发人员,考虑问题的方向不是这么样的。
1,业务上需要什么功能,某个库或中间件能提供,那么只要冲自已想要的去了解好就行,毕竟软件功能要的永远是够用就行,要考虑以后扩展就不要盲目用第三方提供的东西了,业务周期也没这么充裕的时间让你慢慢搞,堆起来功能能用时业务考虑的第一要素。所以问此中间件和库深层了解是多余的,人人都是冲它有自已想要的功能去用而已,没必要用一样就得了解得透彻。
2,既然是java开发,那么要看看想找的是什么人,搬砖工问的是使用过什么框架,什么库就行了,架构师级别问的,应该是spring,springboot,springcloud都有什么不同,有什么优点,有什么缺点,缺点怎么克服,给出方案和案例才是重点。举个简单例子,很多都知道swagger能生成文档,但对复杂数据不支持,该怎么救活呢?很多人会答不上,但架构师级别有做过的肯定知道,这些是开发前必须解决的事。只要工作场景用不着,很多人对java都是不认识的,nio和netty有什么用都可能不清楚,因为工作场景用不上,用得上的多数是架构级别。如果非架构级别还经常用上,只能说现在用于开发的框架设计太烂了。
3,既然是用java,多线程相关的就别问些什么了,知道hashtable和hashmap的区别就好了,知道线程并行访问资源的时序分析和注意事项就可以了,加个concurrent包装的,就别用来做什么多线程,高效率之类的东西了,用原子锁级别的能有多快呢?并行读互斥写的锁,在绝对读写高并发时同样死。用java老老实实用无状态线程池,共享对象什么的用个redis或memc来放就好了。java不可能像c\c++那样能用cas解决任何高效并发的问题。安全生产最重要,效率稍低机器来补。java的各种多线程对象,sync关键字,都是让多线程变得比单线程流水线还慢的东西。
作为面试官,就要清楚要招的是什么人,要用什么人,别老把乱七八糟的东西扯一大堆不等用的,问倒对方还觉得高兴一样,这样对你对公司形象对面试者都没有好处。
面试重点是这人现有技能是否满足岗位要求,人是否能好好合作,最后才是这人是否学习快,灵活变通,能产生更多价值。

面试2

面试职位:Java开发(机器人后台管理系统)
面试公司:维xxx科技有限公司
面试时间:2019-09-20

面试流程:
1)填表
2)笔试(填空,选择,编程,简答)
3)技术面试(自我介绍,项目介绍,提问)

Java笔试题不难,如果好好准备的话,笔试肯定可以过的。

跟Java面试有关的学习资料如下:
[01] Java面试题全集(上)
[02] Java面试题全集(中)
[03] Java面试题全集(下)

印象比较深的题目如下:

笔试题目:依赖注入的3种方式
参考答案:
① setter方法注入 ②构造器注入 ③@Autowired注入

笔试题目:Spring框架中Bean的作用域
参考答案:
① singleton ② prototype ③ request ④ session ⑤ global-session

笔试题目:Spring MVC的原理

笔试题目:实现三角形的角度
在这里插入图片描述分析:
这家公司主要是做三维实景的,开发人员需要懂几何知识的

package examples;public class MathTest2 {public static void main(String[] args) {Point p1 = new Point(1,2);Point p2 = new Point(3,1);Point p3 = new Point(2,3);double a = p2.getLength(p3);double b = p3.getLength(p1);double c = p1.getLength(p2);// 计算弧度double rad = Math.acos((b*b + c*c - a*a)/(2.0*b*c));// 将弧度转成角度double angle = Math.toDegrees(rad);System.out.println(angle);}}class Point{private double x;private double y;/*** 计算出两个坐标点之间的距离* @param other* @return*/public double getLength(Point other) {double width = this.x-other.x;double height = this.y-other.y;return Math.sqrt(width*width+height*height);}public Point() {super();// TODO Auto-generated constructor stub}public Point(double x, double y) {super();this.x = x;this.y = y;}public double getX() {return x;}public void setX(double x) {this.x = x;}public double getY() {return y;}public void setY(double y) {this.y = y;}
}

笔试题目:栈的实现原理

笔试题目:html5框架的Canvas有什么作用
参考答案:HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像

面试题目:你知道哪些协议?
我回答的是http协议和https协议

面试题目:有没有用过socket?
他们的机器人项目主要是使用socket进行通信的

面试题目:阻塞,同步与异步
参考:
https://www.jianshu.com/p/5bb812ca5f8e

面试题目:客户端跟后台是怎么交互的?
分析:
1)自定义响应结构(POJO类)
2)浏览器通过ajax发送请求
3)控制器根据请求的路径分配对应handler进行处理
4)handler接收请求参数,并返回自定义的响应结构数据
5)通过视图组件将响应数据转成json格式的文本,发送给浏览器

维xxx科技有限公司面试小结
1)问的问题基本上都是很基础的
2)准备不够充分

参考资料:
[01] Spring注解依赖注入的三种方式的优缺点以及优先选择
[02] 理解Spring框架中Bean的作用域
[03] Java中计算三角形的角度
[04] socket阻塞与非阻塞,同步与异步
[05] ajax的同步和异步有怎样的区别?


面试3

面试职位:软件测试
面试公司:上海好xx信息技术有限公司
面试时间:2019-09-24

面试流程:
1)填表
1)技术面试(自我介绍,项目介绍,提问)

印象比较深的题目如下:

面试题目:Email系统怎么测试?比如:QQ邮箱
分析:
这个问题比较开放,现场没发挥好。
1)功能角度(功能运行成功和运行失败的各种情况)
测试发送邮件:邮件主题为空的情况;收件人为空的情况;收件人邮件地址不正确的情况;收件人过多的情况;邮件正文为空的情况;邮件主题过长的情况;邮件正文内容过长的情况;邮件正文包含图片的情况;输入正确的情况;邮件正文设置样式的情况;附件个数过多的情况;附件大小超出限制的情况;服务器磁盘空间不够的情况;收件人邮箱空间不够的情况;邮件主题包含特殊字符(换行、空格、引号等)的情况;数据一致性检查(对方收到的内容是否与发送的内容一致,不会出现中文乱码)
2)安全性角度
登录请求里面的密码是否做了加密处理;邮件内容是否做了加密处理;邮件正文内容包含js代码的情况;邮件正文内容包含木马链接的情况;非登录状态能否发送邮件;附件是病毒或木马文件的情况;
3)性能角度
email系统的响应速度如何;模拟大量并发的情况;
4)兼容性角度
使用不同的浏览器进行测试
5)界面角度(样式检查)
根据原型效果图进行比对(比如:邮件发送成功的界面,发送失败的界面等等)

面试官补充了两点:
1)系统的关联性(QQ聊天系统和QQ邮件系统)
2)垃圾邮件处理机制

面试题目:你知道RPC么?讲一下RPC的原理
RPC的实现原理主要包括8个步骤,请参考[06]

参考资料:
[06] RPC的实现原理
[07] 什么是RPC


面试4

面试职位:Java开发
面试公司:上海xx金融信息服务有限公司
面试时间:2019-09-25

面试流程:
1)填表
2)笔试(逻辑题,选择题,简答题)
3)1面:技术经理面试(自我介绍,项目介绍,提问)
4)2面:公司高管面试(自我介绍,提问)
5)3面:HR面试(沟通薪资待遇)

印象比较深的题目如下:

笔试题目(逻辑):
在一张长方形的桌面上放了n个一样大小的圆形硬币。这些硬币中可能有一些不完全在桌面内,也可能有一些彼此重叠;当再多放一个硬币而它的圆心在桌面内时,新放的硬币便必定与原先某些硬币重叠。请证明整个桌面可以用4n个硬币完全覆盖。

笔试题目(逻辑):
假设有一个池塘,里面有无穷多的水。现有2个空水壶,容积分别为5升和6升。问题是如何只用这2个水壶从池塘里取得3升的水。
我写上去的答案:
1)用容积为6升的水壶装满水
2)往容积为5升的水壶倒水,直至倒满(6升的水壶里面还剩1升水)
3)把容积为5升的水壶里面的水全部倒掉
4)把容积为6升的水壶里面剩余的1升水倒入容积为5升的水壶
5)用容积为6升的水壶装满水
6)往容积为5升的水壶倒水,直至倒满(6升的水壶里面还剩2升水)
7)把容积为5升的水壶里面的水全部倒掉
8)把容积为6升的水壶里面剩余的2升水倒入容积为5升的水壶
9)用容积为6升的水壶装满水
10)往容积为5升的水壶倒水,直至倒满(6升的水壶里面还剩3升水)

笔试题目(逻辑):
现在共有100匹马跟100块石头,马分3种,大型马;中型马跟小型马。其中一匹大马一次可以驮3块石头,中型马可以驮2块,而小型马2头可以驮一块石头。问需要多少匹大马,中型马跟小型马?

参考资料:
[08] 50道逻辑思维题目

笔试题目(Java)

		String s1 = "Student";String s2 = "Stu" + "dent";String s3 = new String("Student");System.out.println(s1==s2);//结果是多少?trueSystem.out.println(s1==s3);//结果是多少?false

笔试题目(Java):volatile关键字的作用

参考资料:
[09] volatile关键字的作用

笔试题目(Java):CMS收集器

参考资料:
[10] 并发收集器 CMS

笔试题目(Java):为什么要使用MQ消息中间件

参考资料:
[11] 为什么要使用MQ消息中间件?它解决了什么问题?
[12] 为什么要使用MQ和到底什么时候要使用MQ

笔试题目(算法)

二分搜索算法是利用( )实现的算法
A.分治策略 B.动态规划法 C.贪心法 D.回溯法

参考资料:
[13] 二分查找算法实现(图解)与实例

笔试题目(算法):插入排序算法的时间复杂度

参考资料:
[14] 插入排序算法、时间复杂度和稳定性

笔试题目(c语言):volatile关键字的作用?一个指针可以是volatile吗?

参考资料:
[15] 解读关键字volatile

笔试题目(c语言)

下面是一个简单的密码保护功能,你能在不知道密码的情况下将其破解吗?

    #include<stdio.h> int main(int argc, char *argv[]) { int flag = 0; char passwd[10]; memset(passwd,0,sizeof(passwd)); strcpy(passwd, argv[1]); if(0 == strcmp("LinuxGeek", passwd)) { flag = 1; } if(flag) { printf("\n Password cracked \n"); } else { printf("\n Incorrect passwd \n"); } return 0; } 

我写上去的答案是:① 使用穷举法破解 ②利用缓存溢出漏洞

参考资料:
[16] 栈中变量的存放-strcpy
[17] 12个有趣的C语言面试题

笔试题目(c语言):static关键字的作用?const关键字的作用?
我写上去的答案是:static表示变量的空间只有1份;const关键字可以用来定义常量;

笔试题目(操作系统):进程之间的通信方式

参考资料:
[18] 进程间的几种通信方式

笔试题目(计算机网络):TCP和UDP的比较

笔试题目(项目)

天猫双十一有个积分换魔盒的活动,总共有50万台天猫魔盒(box),每个用户(user)可以用99个天猫积分(point)兑换一台魔盒,且每人限换一台。 请设计一套java接口并实现下单(order)逻辑。 参考(但不局限于)下面的下单逻辑:
1、创建订单
2、扣减用户积分
3、扣减魔盒库存
4、下单成功
同时请回答:
1、数据库表结构如何设计,有哪些表,分别有什么作用?
2、下单过程中哪些地方可能成为瓶颈?如何解决或改善?
3、是否会用到数据库事务,哪些地方会用到?如果不用数据库事务,如何保证数据的一致性?

用户表:t_user

字段名数据类型约束描述
idint主键用户编号
usernamevarchar(50)非空用户名
passwordvarchar(50)非空登录密码
creditint默认值为0积分
mobilevarchar(50)手机号码
addressvarchar(200)收货地址

在这里插入图片描述
商品表:t_product

字段名数据类型约束描述
idint主键商品编号
namevarchar(50)非空商品名称
brandvarchar(50)品牌
pricefloat(10,2)非空单价
exchange_creditint兑换所需积分
exchange_count_limitint兑换数量限制
stockint库存数量
creditint默认值为0积分
exchange_flagboolean默认值false能否使用积分兑换
img_urlvarchar(100)图片路径
descriptiontext商品描述

在这里插入图片描述

订单表:t_order

字段名数据类型约束描述
idvarchar(50)主键订单编号
user_idint外键用户编号
total_amountfloat(10,2)订单总金额
actual_total_amountfloat(10,2)实际订单总金额
discount_by_creditfloat(10,2)积分抵扣掉的金额
payment_gatewayint支付方式
payment_statusint订单支付状态
order_statusint订单状态
use_creditboolean是否使用积分
create_timedatetime下单时间

订单明细表:t_item

字段名数据类型约束描述
idint主键项目编号
order_idvarchar(50)外键订单编号
product_idint外键商品编号
qualityint购买数量

兑换记录表:t_exchange_records

字段名数据类型约束描述
idint主键记录编号
user_idint外键用户编号
product_idint外键商品编号
order_idvarchar(50)外键订单编号
exchange_quantityint兑换数量
exchange_datedate兑换日期

参考资料:
[19] 天猫积分换魔盒
[20] 面试题:阿里 天猫积分换魔盒


面试5

面试职位:Java开发
面试公司:上海易*软件有限公司
面试时间:2019-11-13

面试流程:
1)填表
2)笔试(简答题)
3)1面:技术经理面试(自我介绍,项目介绍,提问)

印象比较深的题目如下:

笔试题目(Java):

System.out.println(Math.round(10.5));//11
System.out.println(Math.round(-10.5));//-10

笔试题目(Java):

public class A {static{System.out.print("1");}public A(){System.out.print("2");}
}
public class B extends A {static{System.out.print("a");}public B(){System.out.print("b");}
}
/*** @Author: yangzc* @Description: 控制台输出多少?1a2b2b* @Date: Created on 20:34 2019/11/13* @Modified By:*/
public class ABTest {public static void main(String[] args) {A ab = new B();ab = new B();}
}

参考资料:
[21] Java中父类与子类的加载顺序详解

笔试题目
登录(认证授权)涉及的4种技术方案:
1)用户名和密码
2)OAuth2
3)SSO
4)JWT

选择其中的1个或多个,画出登录的流程图或时序图

参考资料:
[22] 登录页面授权认证时序图
[23] OAuth2和JWT - 如何设计安全的API
[24] OAuth2实现单点登录SSO
[25] 基于JWT和Oauth2 实现 SSO(单点登录)
[26] JWT、OAUTH2与SSO资料补充


面试6

面试职位:Java开发
面试公司:上海*羽网络有限公司
面试时间:2019-11-14

面试流程:
1)填表
2)笔试(简答题)
3)1面:技术经理面试(自我介绍,项目介绍,提问)

印象比较深的题目如下:

笔试题目:Java类初始化顺序

参考资料:
[27] Java类初始化顺序说明

笔试题目:ReadWriteLock是否读写互斥

参考资料:
[28] ReadWriteLock读写之间互斥吗

笔试题目:

/*** @Author: yangzc* @Description: x和y是否相等?为什么?* @Date: Created on 21:22 2019/11/14* @Modified By:*/
public class StringTest {public static void main(String[] args) {String x = "ab";String y = "a" + "b";System.out.println(x == y);//true}
}

笔试题目:写一个死锁

笔试题目:设计一个单例模式

参考资料:
[29] 单例模式——懒汉模式

笔试题目:Spring怎么解决循环依赖

参考资料:
[30] Spring 如何解决循环依赖的问题

笔试题目:int a = 1是原子操作么?

笔试题目:MySQL数据库,离散度低的字段建立索引会有什么影响?

推荐阅读:
[31] 最近面试java后端开发的感受:如果就以平时项目经验来面试,通过估计很难——再论面试前的准备
[32] 2年Java开发工作经验面试总结

微信扫一扫关注公众号
image.png
点击链接加入群聊

https://jq.qq.com/?_wv=1027&k=5eVEhfN
软件测试学习交流QQ群号:511619105


http://chatgpt.dhexx.cn/article/1WjFQJlk.shtml

相关文章

腾讯的硬盘里,有互联网的昨天今天和明天

作者&#xff1a;史中 来源&#xff1a;浅黑科技&#xff08;qianheikeji&#xff09; 2018年1月1日&#xff0c;太阳照常升起。 世界上所有的时钟合谋&#xff0c;把最后一个90后推过了18岁的门槛。对于这些年轻的面孔来说&#xff0c;自由的风终于如期而至&#xff0c;只是其…

机械硬盘与SSD固态硬盘性能的深度

从7200转硬盘升级到10000转的迅猛龙&#xff0c;那叫量变。从10000转的迅猛龙升级到SSD&#xff0c;这个叫质变。2者的差距是有些地方相当大&#xff0c;而有些却很接近&#xff0c;主要是难比较。经常听到有人说&#xff1a;我买2个黑盘组RAID 0&#xff0c;传输率也有接近250…

sudo rm-rf引发的惨案——Linux硬盘的分区和挂载

前言 前不久&#xff0c;刚使用组里的一台服务器&#xff0c;这台服务器平时用的人不多&#xff0c; 没有严格的管理机制&#xff0c;大家都使用同一个用户名进行远程连接&#xff0c;人人都有sudo权限。我因为对Linux不是非常熟悉&#xff0c;使用管理员权限下执行了一个删除…

DVR-硬盘录像机

硬盘录像机&#xff08;Digital Video Recorder&#xff0c;简称DVR&#xff09;&#xff0c;即数字视频录像机&#xff0c;相对于传统的模拟视频录像机&#xff0c;采用硬盘录像&#xff0c;故常常被称为硬盘录像机&#xff0c;也被称为DVR。 它是一套进行图像存储处理的计算…

[转]80后研制出世界最快硬盘:传输速度每秒1.5GB

传输速度每秒1.5GB&#xff0c;仅需3秒就能传输一张DVD光盘的数据&#xff0c;是普通硬盘速度的15倍。一秒钟可以访问31万次&#xff0c;而普通硬盘仅可以访问16次。这些数据&#xff0c;描绘着一款固态硬盘的卓越性能。研发出这款世界传输速度最快、性能最好的固态硬盘的&…

我们测了30款移动硬盘,却如此尴尬

我最近在研究移动硬盘&#xff0c;如果你也感兴趣不妨来看看我这些天的研究成果吧。不卖关子&#xff0c;我们发现不同品牌SDD移动硬盘间存在着很大差异&#xff0c;如果你非常在意读写速度就需要慎重选择了&#xff1b;而不同品牌HDD移动硬盘间在速度上并不存在巨大差异&#…

web安全攻防渗透测试实战指南

1. Nmap的基本 Nmap ip 6 ip Nmap -A 开启操作系统识别和版本识别功能 – T&#xff08;0-6档&#xff09; 设置扫描的速度 一般设置T4 过快容易被发现 -v 显示信息的级别&#xff0c;-vv显示更详细的信息 192.168.1.1/24 扫描C段 192.168.11 -254 上 nmap -A -T4 -v -i…

加速!加速!西数万转硬盘猛禽RAID测试

[迅猛龙的袭击] 西部数据猛禽系列在玩家们的心目里或许一直是高高在上&#xff0c;因为在西数之前的策略里&#xff0c;这个系列的产品都是列入到“企业级”里的&#xff0c;但随着高端玩家对硬盘性能的需求越来越高&#xff0c;“猛禽”这个代表极端性能的产品线&#xff0c;也…

xboxone硬盘坏的表现_你的机械硬盘有RV振动传感器吗?三款2.5寸HDD测试

机械硬盘人人都用&#xff0c;虽然SSD的价格逐年下降&#xff0c;可是就容量/价格比来说&#xff0c;离机械硬盘还有不少距离。尽管HDD有着大容量的优势&#xff0c;可是如今硬盘存储密度越来越高&#xff0c;磁头距离盘片太近&#xff0c;现在的硬盘也越来越脆弱&#xff0c;经…

32g的u盘速度测试软件,速度堪比硬盘 海盗船32GB海量运动型U盘评测

速度堪比硬盘 海盗船32GB海量运动型U盘评测 出处&#xff1a;快科技 2010-03-23 15:39:30 作者&#xff1a;良宵 编辑&#xff1a;良宵[爆料] 收藏文章 内容导航&#xff1a; 第[01]页&#xff1a;[导言]第[02]页&#xff1a;[产品赏析]第[03]页&#xff1a;[性能测试及总结…

运维java项目的技巧 (war包、jar包、docker环境)

最近上线了修复log4j2漏洞的java项目。小结下系统更新操作过程。 一、tomcat下的war包的项目 cd /var/lib/tomcat9 root:/var/lib/tomcat9# ls webapps/ test test.war test.war-bak ROOTsystemctl stop tomcat9 备份test.war 上传新的test.war systemctl start tomcat9查…

《Linux运维总结:Windows Server 2012 R2安装JAVA环境》

文章目录 一、部署包下载二、部署步骤总结&#xff1a;整理不易&#xff0c;如果对你有帮助&#xff0c;可否点赞关注一下&#xff1f; 一、部署包下载 链接&#xff1a;https://pan.baidu.com/s/1U2EstyXu_r7_uD0YpERhAQ 提取码&#xff1a;1234二、部署步骤 1、双击运行jdk…

Java对接ansible自动运维化平台

Java对接ansible自动运维化平台实现文件采集分发 经过大量查阅&#xff0c;网上使用Java对接ansible自动运维化平台的示例代码几乎没有&#xff0c;为了方便自己后期巩固以及有需要的小伙伴&#xff0c;特以记录&#xff01;&#xff01;&#xff01; 此次对接主要为以下两个…

java开发和运维的区别

前言 在大型系统中,为了减少数据库压力通常会引入缓存机制,一旦引入缓存又很容易造成缓存和数据库数据不一致,导致用户看到的是旧数据。 为了减少数据不一致的情况,更新缓存和数据库的机制显得尤为重要,接下来带领大家踩踩坑。 Spring 所有的答案在文末展示 Spring 概述…

JAVA开发运维(云基础设备监控)

在大型的商用系统中&#xff0c;经常需要监控云设备的健康状态&#xff0c;性能情况&#xff0c;流量数据等。及时发现系统问题&#xff0c;及时修复&#xff0c;以确保系统的高可用。检查云资源的工作内容主要包括基础监控、主动拨测、用户体验、APM监控、指标体系、业务分析、…

JAVA开发运维(CI/CD)

CI :持续性集成 CD&#xff1a;持续性部署 SIT&#xff1a;系统集成测试 UAT&#xff1a;用户验收测试 研发流程的变化&#xff0c;因为用户永远一开始不知道自己想要什么样的东西&#xff0c;导致了软件无法从一而终的进行设计&#xff0c;用户需要能立刻运行的软件和功能。 &…

Hi,运维,你懂Java吗--No.4:JVM-概述

作为运维&#xff0c;你不一定要会写Java代码&#xff0c;但是一定要懂Java在生产跑起来之后的各种机制。 本文为《Hi&#xff0c;运维&#xff0c;你懂Java吗》系列文章 第四篇&#xff0c;敬请关注后续系列文章 欢迎关注 龙叔运维&#xff08;公众号&#xff09; 持续分享运…

JAVA开发与运维(docker运维常规操作)

使用docker来安装软件步骤。 1、先装好docker环境。 1.4 docker环境及部署 1.4.1 版本 Client: Docker Engine – Community version: 20.10.12 Server: Docker Engine – Community version: 20.10.12 1.4.2 部署 1.用yum拉取阿里云镜像: yum-config-manager --add-repo …

JAVA开发运维(扁鹊见齐桓公之系统运维之痛)

引言&#xff1a; 扁鹊见蔡桓公&#xff0c;立有间&#xff0c;扁鹊曰&#xff1a;“君有疾在腠理&#xff0c;不治将恐深。”桓侯曰&#xff1a;“寡人无疾。”扁鹊出&#xff0c;桓侯曰&#xff1a;“医之好治不病以为功&#xff01;” 居十日&#xff0c;扁鹊复见&#xff0…

死磕原理!java运维工程师做什么

前言 今天中午收到我司安全部发了一封邮件:Jackson存在安全漏洞。查了一下,这件事并不算很新鲜了(已经过了5天的样子),本文来聊聊吧。 说起来还蛮戏剧化:阿里云向Jackson官方提交了一个Jackson序列化安全漏洞。众所周知,在国内关于JSON库使用有两大主要阵营:国际著名…