个人面试总结

news2024/9/23 16:26:46

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

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

笔试题目:

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的缓存机制及作用,设置热点数据等等,感觉答的有点偏)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ae After Effects2024 for Mac 视频处理软件

Mac分享吧 文章目录 效果一、准备工作二、开始安装1、Anticc简化版安装1.1双击运行软件&#xff0c;安装1.2 解决来源身份不明的开发者问题1.3 再次运行软件&#xff0c;即可进行AntiCC安装 2. Ae2024安装2.1 打开 Ae 2024 安装包组2.2 将 Ae 安装包拖至桌面2.3 安装 Ae2024 &…

0708,LINUX目录相关操作

主要是冷气太足感冒了&#xff0c;加上少吃药抗药性差&#xff0c;全天昏迷&#xff0c;学傻了学傻了 cat t_chdir.c #include <stdio.h> #include <unistd.h> #include <error.h> #include <errno.h> #include <sys/stat.h>int main(int argc…

PyTorch实现BERT预训练模型转化指南

huggingface官方的介绍&#xff1a; https://huggingface.co/transformers/converting_tensorflow_models.html 直接用命令行 把箭头处路径改为自己放原有tf版本预训练模型的路径 回车后会有一大堆提示&#xff0c;然后发现路径下多了一个bin文件&#xff0c;加上原本的config…

【C++深度学习】多态(概念虚函数抽象类)

✨ 疏影横斜水清浅&#xff0c;暗香浮动月黄昏 &#x1f30f; &#x1f4c3;个人主页&#xff1a;island1314 &#x1f525;个人专栏&#xff1a;C学习 &#x1f680; 欢迎关注&#xff1a;&#x1f44d;点赞 &…

从零开始读RocketMq源码(三)Broker存储Message流程解析

目录 前言 准备 消息载体CommitLog 文件持久化位置 源码解析 broker消息对象MessageExtBrokerInner 异步存储message CommitLog的真相 创建MappedFile文件 加入异步刷盘队列 Message异步存储MappedByteBuffer 总结 前言 在面试中我们经常会听到这样的回答&#x…

31_JQuery一文读懂,JS的升级版

今日内容 零、 复习昨日 一、JQuery 零、 复习昨日 1 js数组的特点(长度,类型,方法) - js数组的长度不限 - 类型不限 - 提供很多方法2 js中和的区别 - 判断数值相等 - 判断数值和数据类型同时相等3 js表单事件的事件名(事件属性单词) - 获得焦点 onfocus - 失去焦点 onblur …

自媒体运营怎样引流客源?

不管是企业还是个人&#xff0c;越来越多都在做自媒体引流运营&#xff0c;那有什么引流客源的方式呢&#xff1f; 高质量内容&#xff1a;创作并分享有价值的内容&#xff0c;吸引目标受众&#xff0c;提升内容的分享和传播效果。 SEO优化&#xff1a;优化文章标题、关键词和…

React学习笔记01

一、学习资料 1.学习网课 黑马程序员前端React18入门到实战视频教程&#xff0c;从reacthooks核心基础到企业级项目开发实战&#xff08;B站评论、极客园项目等&#xff09;及大厂面试全通关_哔哩哔哩_bilibili 2.学习文档 快速入门 – React 中文文档 二、React 1.定义 …

如何在玩客云中安装小雅AList并实现使用手机平板远程连接听歌看电影

文章目录 前言1. 本地部署AList2. AList挂载网盘3. 部署小雅alist3.1 Token获取3.2 部署小雅3.3 挂载小雅alist到AList中 4. Cpolar内网穿透安装5. 创建公网地址6. 配置固定公网地址 前言 本文主要介绍如何在安装了CasaOS的玩客云主机中部署小雅AList&#xff0c;并在AList中挂…

【Vscode】显示多个文件 打开多个文件时实现标签栏多行显示

Vscode显示多个文件&VSCode打开多个文件时实现标签栏多行显示 写在最前面一、解决打开文件的时候只显示一个tab的办法解决办法如下&#xff1a; 二、文件标签栏多行显示设置步骤&#xff1a; &#x1f308;你好呀&#xff01;我是 是Yu欸 &#x1f30c; 2024每日百字篆刻时…

【中项第三版】系统集成项目管理工程师 | 第 11 章 规划过程组① | 11.1 - 11.2

前言 第 11 章对应的内容选择题和案例分析都会进行考查&#xff0c;这一章节属于10大管理的内容&#xff0c;学习要以教材为准。本章上午题分值预计在15分。 目录 11.1 制定项目管理计划 11.1.1 主要输入 11.1.2 主要输出 11.2 规划范围管理 11.2.1 主要输入 11.2.2 主…

比curl更直观的网站性能测试工具httpstat——筑梦之路

GitHub - davecheney/httpstat: Its like curl -v, with colours. wget https://raw.githubusercontent.com/reorx/httpstat/master/httpstat.pymv httpstat.py /usr/bin/httpstat #移动到环境变量路径chmod x /usr/bin/httpstat #添加可执行权限 exec bash #重置当前bash进…

算法训练营day27--122.买卖股票的最佳时机II +55. 跳跃游戏 +45.跳跃游戏 II+1005.K次取反后最大化的数组和

一、 122.买卖股票的最佳时机II 题目链接&#xff1a;https://leetcode.cn/problems/binary-search/description/ 文章讲解&#xff1a;https://www.programmercarl.com/0122.%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BAII.html 视频…

致远漏洞(登陆绕过+任意文件上传)

漏洞复现 1.获得cookie POST /seeyon/thirdpartyController.do HTTP/1.1 Host: 192.168.1.9 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0 Accept: text/html,application/xhtmlxml,application/xml;q0.9,*/*;q0.8 Accept-Langua…

Linux系统之lscpu命令的基本使用

Linux系统之lscpu命令的基本使用 一、lscpu命令介绍二、lscpu命令的使用帮助2.1 命令格式2.2 命令选项2.3 使用帮助 三、lscpu命令的基本使用3.1 查看lscpu版本3.2 直接使用lspcu命令3.3 可解析的格式打印cpu信息3.4 可扩展格式打印cpu信息 四、lscpu命令使用注意事项 一、lscp…

【分布式系统】Ceph块存储系统之RBD接口

目录 一.服务端操作 1.创建一个名为 rbd-xy101 的专门用于 RBD 的存储池 2.将存储池转换为 RBD 模式 3.初始化存储池 4.创建镜像 5.管理镜像 6.Linux客户端使用 6.1.在管理节点创建并授权一个用户可访问指定的 RBD 存储池 6.2.修改RBD镜像特性&#xff0c;CentOS7默认…

【进阶篇-Day7:JAVA中Date、LocalDate等时间API的介绍】

目录 1、概述2、JDK8(-) 时间类2.1 Date类&#xff1a;&#xff08;1&#xff09;构造方法&#xff1a;&#xff08;2&#xff09;常用成员方法&#xff1a; 2.2 SimpleDateFormat类&#xff1a;2.3 总结&#xff1a;2.4 Calendar类介绍&#xff1a; 3、JDK8() 时间类3.1 日历类…

【计算机毕业设计】基于Springboot的足球青训俱乐部管理系统【源码+lw+部署文档】

包含论文源码的压缩包较大&#xff0c;请私信或者加我的绿色小软件获取 免责声明&#xff1a;资料部分来源于合法的互联网渠道收集和整理&#xff0c;部分自己学习积累成果&#xff0c;供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者…

蚁剑编码器编写——php木马免杀

蚁剑编码器编写——php木马免杀 我的想法是 木马要先免杀&#xff0c;能够落地&#xff0c;再去考虑流量层面的问题 举几个例子演示一下 命令执行与代码执行是有比较大的区别&#xff0c;蚁剑执行的是php代码&#xff0c;而system&#xff0c;proc_open,passthru,exec,shell_…

CSS学习碎碎念之卡片展示

效果展示&#xff1a; 代码展示 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>图片展示</title…