个人面试总结

写在前面:以下是自己在拟录用后回顾总结的了一下当时面试题目,把标答写了出来,供以后复习所使用,希望大家理性食用~~

预祝大家都能找到心仪的工作

笔试题目:

1.1. java中Collection和Collections的区别

  • Collection:
    • Collection 是一个集合接口,它代表集合框架,Collection 接口定义了操作集合元素的基本方法,比如添加、删除、遍历、查询等。一般来说,通过 Collection 接口的实现类(如 ArrayList、HashSet 等)来操作具体的集合对象。

  • Collections:
    • Collections 是一个工具类,它包含了各种静态方法,用于操作各种集合。这些方法包括对集合进行排序、搜索、同步化等操作。
    • Collections 类提供了一系列静态方法,如sort()、binarySearch()、synchronizedCollection() 等,这些方法可以用来操作集合类对象,而不是操作具体的集合元素。

1.2. java中把数组转为list

拓展:数组转list,list转数组

  • 数组转list

通过 Arrays.asList(strArray) 方式,将数组转换List后,不能对List增删,只能查改,否则抛异常。

    • 1. 方式一(最常见,非最佳方法)
private void testArrayCastToListError() {
		String[] strArray = new String[2];
		List list = Arrays.asList(strArray);
		//对转换后的list插入一条数据
		list.add("1");
		System.out.println(list);
}

执行结果:

Exception in thread "main" java.lang.UnsupportedOperationException
	at java.util.AbstractList.add(AbstractList.java:148)
	at java.util.AbstractList.add(AbstractList.java:108)
	at com.darwin.junit.Calculator.testArrayCastToList(Calculator.java:19)
	at com.darwin.junit.Calculator.main(Calculator.java:44)

原因:

Arrays.asList(strArray)返回值是java.util.Arrays类中一个私有静态内部类java.util.Arrays.ArrayList,它并非java.util.ArrayList类。java.util.Arrays.ArrayList类具有 set(),get(),contains()等方法,但是不具有添加add()或删除remove()方法,所以调用add()方法会报错

使用场景:需要在将数组转换为List后,对List进行增删改查操作,在List的数据量不大的情况下,可以使用。

    • 2.方式二(最高效)

通过Collections.addAll(arrayList, strArray)方式转换,根据数组的长度创建一个长度相同的List,然后通过Collections.addAll()方法,将数组中的元素转为二进制,然后添加到List中,这是最高效的方法。

String[] strArray = {"a","b","c"};
ArrayList< String> arrayList = new ArrayList<String>(strArray.length);
Collections.addAll(arrayList, strArray);
    • 3.方式三(Java8+的stream API)
Integer[] array = {1, 2, 3, 4, 5};
List<Integer> list = Arrays.stream(array)
                            .collect(Collectors.toList());
    • 4.方式四(方式一的改进,可增删)

通过ArrayList的构造器,将Arrays.asList(strArray)的返回值由java.util.Arrays.ArrayList转为java.util.ArrayList。

private void testArrayCastToListRight() {
		String[] strArray = new String[2];
		ArrayList<String> list = new ArrayList<String>(Arrays.asList(strArray)) ;
		list.add("1");
		System.out.println(list);
	}
  • list转数组
//要转换的list集合
 List<Integer> testList = new ArrayList<>(){{add(1);add(2);add(3);}};

 //使用toArray(T[] a)方法
 int[] array2 = testList.toArray(new int[testList.size()]);

//打印该数组
  for(int i = 0; i < array2.length; i++){
      System.out.println(array2[i]);
  }

1.3. cookie和session的区别

  • Cookie可以存储在浏览器或者本地Session只能存在服务器
  • session 能够存储任意的 java 对象,cookie 只能存储 String 类型的对象
  • Session比Cookie更具有安全性(Cookie有安全隐患,通过拦截或本地文件找得到你的cookie后可以进行攻击)
  • Session占用服务器性能,Session过多,增加服务器压力
  • 单个Cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个Cookie,Session是没有大小限制和服务器的内存大小有关。

1.4. Thread类start与run区别是什么?

  1. start() 方法:
    • 作用:start() 方法用于启动一个新的线程,并执行线程的run()方法
    • 线程生命周期:调用start()方法会在后台启动一个新线程,使得线程处于就绪(Runnable)状态,当获取到CPU时间片后,会调用线程的run()方法来执行具体的任务。
    • 并发执行:如果多次调用start()方法,每次都会创建一个新的线程实例,从而可以并发执行多个线程。
  1. run() 方法:
    • 作用:run() 方法定义了线程的主要逻辑或任务代码。
    • 普通方法调用:直接调用run()方法并不会创建新线程,而是在当前线程中同步执行run()方法的代码块,类似于普通的方法调用
    • 顺序执行:如果通过run()方法来启动线程,那么run()方法中的代码会按照顺序执行,而不会开启新的线程去并发执行。

1.5. throws和throw的区别是什么?

  1. throws:
    • throws是一个用于方法签名中的关键字,用来指定方法可能抛出的受检查异常(checked exception),而不是运行时异常(unchecked exception)。它通常用在方法的定义处,用来说明该方法可能会抛出哪些异常,以便调用方(调用该方法的地方)知道需要处理哪些异常。
public void someMethod() throws IOException, SQLException {
    // 方法体
}
    • 在上述例子中,someMethod() 方法声明了可能抛出 IOException 和 SQLException 异常。调用该方法的代码在调用之前必须要么捕获这些异常,要么继续向上抛出这些异常。
  1. throw:
    • throw是一个关键字,用于在代码块中显式地抛出一个异常对象。它通常用在方法体内部,用来抛出自定义的异常或者已有的异常实例。
throw new IOException("File not found");
    • 在上述例子中,throw 语句抛出了一个新创建的 IOException 对象,并且可以选择传递一个描述性的字符串参数,用来描述异常的原因或者上下文信息。

1.6. 详解事务ACID原则

  • 原子性(Atomicity):
    • 原子性指的是事务是一个不可分割的工作单位事务中的所有操作要么全部完成,要么全部不完成,不存在部分完成的情况。如果事务中的任何一步操作失败,整个事务都会被回滚(Rollback)到事务开始前的状态,以保证数据的一致性和完整性。
  • 一致性(Consistency):
    • 一致性确保了当事务完成时,数据从一个一致性状态转换到另一个一致性状态。事务在执行前后,数据库的完整性约束没有被破坏,如主键、外键、触发器等约束条件依然有效。这保证了数据库的结构和数据在事务开始和结束时都是有效的。
  • 隔离性(Isolation):
    • 隔离性指的是并发执行的事务之间是相互隔离的,一个事务的执行不应该受到其他事务的干扰。即使多个事务并发执行,各个事务之间也不会互相影响,每个事务看到的数据应该是一致的。数据库通过锁定机制来实现事务的隔离性,确保并发执行的事务不会相互干扰。
  • 持久性(Durability):
    • 持久性指的是一旦事务提交,所做的修改将永久保存在数据库中,即使系统发生故障,如数据库崩溃、服务器宕机,也不应该丢失提交的数据。系统通过将事务日志写入非易失性存储(如磁盘)来保证持久性,以便在系统恢复后可以重新应用这些日志,恢复数据的完整性。

1.7. 手写sql

1)查询没有合同的总人数(不可使用子查询):

select count(*) as TotalUsersWithoutContracts
from User u
left join Contract c on u.User_id = c .User_id 
where c.Contract_id is null

2)列出所有用户姓名重复的用户姓名:

select DISTINCT(User_name)
from User
group by User_name
having count(User_name) > 1

3)列出2010-01-01至2010-05-01期间,没有登录过系统的用户:

SELECT U.User_name
from User U
left join Log L on U.User_id = L.User_id
where L.Login_time is NULL 
and '2010-01-01' <= L.Login_time and L.Login_time <= '2010-05-01';

面试题目:

  1. Redis缓存击穿是什么?
  1. 说一下快速排序是怎么实现的?
  2. 冒泡排序的时间复杂度是多少?最好和最坏一样吗,为什么?
  3. ThreadLocal的底层数据结构是什么?
  4. 如何在前端代码中查找想要修改的内容,比如改页面的颜色(没答出来)
  5. 平时除了使用Mysql还使用过哪些数据库,比如MongoDB、Oracle(没有,只用过Mysql)
  6. 说说索引的使用场景和注意事项
  7. 有没有搭过Redis集群(回答没有)
  8. Redis的常用数据结构有哪些?
  9. 使用过哪些常用的linux命令,怎么查看当前运行进程的端口?

答:ps,追问:ps后面是什么,答:ps aux | grep "要查询的进程名称"

  1. top命令是什么?用过吗(回答没用过)
  2. 说一下SpringMVC中前端发送请求到后端执行的具体流程
  3. 具体说一下cookie和session的区别?session的底层数据结构是什么?
  4. 前端页面如何设置计时任务,比如设置10秒后显示一个图片?(不会,没答出来)
  5. 场景题:为什么要使用Redis,它的使用场景是什么,如果现在有一百万条访问量的数据,该如何存储?(说了一下Redis的缓存机制及作用,设置热点数据等等,感觉答的有点偏)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/790563.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

怎样将aac转换mp3格式?推荐四个aac转MP3的方法

怎样将aac转换mp3格式&#xff1f;当需要将aac格式音频转换为MP3格式时&#xff0c;有几种方法可以轻松实现这一目标。MP3是一种广泛支持的音频格式&#xff0c;几乎所有设备和平台都能播放MP3文件&#xff0c;包括各种音乐播放器、手机、平板电脑和汽车音响系统。而且它也提供…

极狐Gitlab使用(1)

目录 续接上篇&#xff1a;极狐Gitlab安装部署-CSDN博客 1. 关闭注册功能 2. 创建群组 3. 创建用户 5. 邀请成员到群组 6. 设置导入导出项目源 7. 通过gitee导入库 8. 通过仓库URL导入 9. 自创建项目 10. 默认分支main的权限 11. 使用普通用户进入自建库 12. 创建用…

传统的springboot项目中,如何进行添加自定义静态资源访问路径实现对静态资源的访问?

如何配置可以实现在浏览器中配置路径实现对resource资源路径下的index.html个性化定制访问路径 要在Spring Boot项目中配置使特定前缀访问静态资源&#xff0c;可以在application.yml文件中配置路径映射。以下是一个示例配置&#xff1a; 打开你的application.yml文件&#xf…

N6 word2vec文本分类

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊# 前言 前言 上周学习了训练word2vec模型&#xff0c;这周进行相关实战 1. 导入所需库和设备配置 import torch import torch.nn as nn import torchvision …

04OLED简介和调试方法

OLED简介和调试方法 调试方式串口调试显示屏调试其他调试方法总结&#xff1a; OLED简介硬件电路OLED驱动函数 keil调试模式进入方法keil调试界面窗口简单功能说明更加强大的功能 调试方式 电脑想看什么变量可以直接打印到屏幕&#xff0c;但是单片机很多时候由于成本和电路结构…

多协议网关设计架构与实现,支持 RS485/232、CAN、M-Bus、MQTT、TCP 等工业协议接入(附代码示例)

一、项目概述 1.1 背景 随着物联网技术的快速发展&#xff0c;越来越多的设备需要接入网络进行数据交互。然而&#xff0c;不同设备往往采用不同的通信协议&#xff0c;例如工业现场常用的Modbus、CAN、电力载波等&#xff0c;以及物联网领域常用的MQTT、TCP/IP等&#xff0c…

C++类与对象-基础篇

目录 一、什么是类 1.1 语法定义 1.2 访问限定符 1.3 类域 二、类的实例化 2.1 什么是实例化 2.2 类的大小 三、this指针 3.1 引入 3.2 this指针的使用 一、什么是类 1.1 语法定义 class 类名 {}; 说明 类似于C语言中的结构体&#xff0c;括号后分号不能丢类内成员可…

SSM学习5:AOP

简介 面向切面编程&#xff0c;一种编程范式&#xff0c;指导开发者如何组织程序结构。可以在不经打原始设计的基础上为其进行功能增强。 入门案例 案例&#xff1a;在接口执行前输出当前系统时间 开发模式&#xff1a;XML 或者 注解 思路分析&#xff1a; 导入坐标&#xf…

数学建模·模糊评价法

模糊评价法 一种解决评价问题或者得出最佳方案的方法具体定义 三集&#xff1a;因素集&#xff0c;评语集和权重集&#xff0c;通过模拟矩阵的处理得到最合理的评语具体步骤 因素集 因素集的确定不难&#xff0c;难在对分级评价时&#xff0c;对因素集的分级有技巧评语集 …

TIOBE 7月编程排行榜出炉!Python再次出圈!

又到了周三&#xff0c;本周有过半了&#xff0c;大家好呀&#xff01; 每月的TIOBE编程排行榜都是技术社区关注的焦点&#xff0c;作为编程语言流行度的晴雨表&#xff0c;它反映了行业趋势和技术走向。2024年7月的榜单揭晓了一个重要变化&#xff1a;Python再次登上榜首&…

如何批量更改很多个文件夹里的文件名中包含文件夹名?

&#x1f3c6;本文收录于《CSDN问答解惑-专业版》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收…

RedisTemplate 中序列化方式辨析

在Spring Data Redis中&#xff0c;RedisTemplate 是操作Redis的核心类&#xff0c;它提供了丰富的API来与Redis进行交互。由于Redis是一个键值存储系统&#xff0c;它存储的是字节序列&#xff0c;因此在使用RedisTemplate时&#xff0c;需要指定键&#xff08;Key&#xff09…

论文学习_Getafix: learning to fix bugs automatically

1. 引言 研究背景:现代生产代码库极其复杂并且不断更新。静态分析器可以帮助开发人员发现代码中的潜在问题(在本文的其余部分中称为错误),这对于在这些大型代码库中保持高代码质量是必要的。虽然通过静态分析尽早发现错误是有帮助的,但修复这些错误的问题在实践中仍然主要…

“连阳抓妖”,连阳抓主升浪 后市能成妖

指标名 连阳抓妖通达信副图指标 是否收费 免费 格式 源码 注:公式不带有未来函数 ► 图表展示 使用技巧 本指标源自网红博主的精辟讲解&#xff0c;专为捕捉“潜力妖股”设计。其核心逻辑简单而高效&#xff0c;仅需满足四大核心条件&#xff0c;即可锁定前期未大涨个股的…

基于51单片机的五路抢答器Protues仿真设计

目录 一、设计背景 二、实现功能 三、仿真演示 四、源程序&#xff08;部分&#xff09; 一、设计背景 近年来随着科技的飞速发展&#xff0c;单片机的应用正在不断的走向深入。本文阐述了基于51单片机的五路抢答器设计。本设计中&#xff0c;51单片机充当了核心控制器的角…

Python实现傅里叶级数可视化工具

Python实现傅里叶级数可视化工具 flyfish 有matlab实现&#xff0c;我没matlab&#xff0c;我有Python&#xff0c;所以我用Python实现。 整个工具的实现代码放在最后,界面使用PyQt5开发 起源 傅里叶级数&#xff08;Fourier Series&#xff09;由法国数学家和物理学家让-巴…

[激光原理与应用-106]:南京科耐激光-激光焊接-焊中检测-智能制程监测系统IPM介绍 - 9 - 图解常见的焊接缺陷/缺欠分类

目录 前言&#xff1a; 1、焊接缺陷的类型 2、焊接缺陷的危害 3、结论 一、功能性缺陷 1.1 虚焊&#xff1a;最重要的非视觉检测的缺陷 1.虚焊的定义 2.虚焊的成因 3.虚焊的危害 4.虚焊的检测与解决 二、成型性缺陷 2.1 黑爆缺陷 1、黑爆缺陷的定义与外观 2、黑爆…

深度优先搜索(所有可达路径)

参考题目&#xff1a;所有可达路径 题目描述 给定一个有 n 个节点的有向无环图&#xff0c;节点编号从 1 到 n。请编写一个函数&#xff0c;找出并返回所有从节点 1 到节点 n 的路径。每条路径应以节点编号的列表形式表示。 输入描述 第一行包含两个整数 N&#xff0c;M&…

红日靶场----(三)2.漏洞利用

上期的通过一句话木马实现对目标主机的持久后门 我使用的是蚁剑&#xff0c;蚁剑安装及使用参考&#xff1a; 下载地址&#xff1a; GitHub - AntSwordProject/AntSword-Loader: AntSword 加载器 安装即使用&#xff1a; 1. 快速入门 语雀 通过YXCMS的后台GETSHELL 利用…

C++第四弹 -- 类与对象(中上) (构造函数 析构函数 拷贝构造函数)

目录 前言构造函数1. 概念2. 特征 析构函数1. 概念2. 特征 拷贝构造函数1. 概念2. 特征 总结 前言 让我们一起揭开 C 对象生命周期管理的神秘面纱&#xff0c;掌握构造函数、析构函数和拷贝构造函数的精髓&#xff01; 博客主页: 酷酷学!!! 期待更多好文, 点击关注~ 构造函…