精简版面试宝典2023-4

news/2024/7/8 0:28:27

Java程序员面试宝典

Java基础面试提

java反射

Java中的反射机制是指在运行时动态地获取类的信息,并操作类的成员(方法、 属性、构造器等)

Java中的反射机制使得程序可以在运行时根据需要,获取和操作类的信息,而无需在编译时确定具体的类

Java中的反射API主要包括以下三个类

一:Class类

该类表示Java中的类和接口,通过Class类可以获取类的名称、修饰符、父类、实现的接口、方法、属性等信息

二、Constructor类

该类表示类的构造方法,通过Constructor类可以创建对象实例

三、Method类该类表示类的方法

通过Method类可以调用类的方法

反射机制主要应用于以下场景

动态加载类

Java中的类通常需要在编译时确定,但有些情况下,需要在程序运行时才能确定需要加载的类

这时就可以使用反射机制动态加载类

动态创建对象

通过反射可以在运行时根据类的信息创建对象实例,这种方式常用于框架和插件的开发,因为插件和框架的使用者并不知道具体的类名

动态调用方法

通过反射可以在运行时根据类的信息调用方法,这种方式常用于JavaBean的属性操作和事件处理等

动态访问属性

通过反射可以在运行时根据类的信息动态获取和修改类的属性值,这种方式常用于框架和插件的开发

例如Spring框架中的依赖注入

需要注意的是:反射机制在一定程度上会影响程序的性能和安全性

  1. 集合数组类

集合类型主要有3种:set(集)、list(列表)和map(映射)。

1.List(有序、可重复) List里存放的对象是有序的,同时也是可以重复的,List关注的是索引,拥有一系列和索引相关的方法,查询速度快。因为往list集合里插入或删除数据时,会伴随着后面数据的移动,所以插入数据慢,查询数据快

2.Set(无序、不能重复) Set里存放的对象是无序,不能重复的,集合中的对象不按特定的方式排序,只是简单地把对象加入集合中。

3.Map(键值对、键唯一、值不唯一) Map集合中存储的是键值对,键不能重复,值可以重复

 

ArrayList遍历

/*第一种遍历方式*/
System.out.print("for循环的遍历方式: ");
for (int i = 0; i < lists.size(); i++) {
    System.out.print(lists.get(i));
}

/*第二种遍历方式*/
System.out.print("foreach的遍历方式:");
for (Integer list : lists) {
    System.out.print(list);
}

/*大第三种遍历方式*/
System.out.print("Iterator的遍历方式:");
for (Iterator<Integer> list = lists.iterator(); list.hasNext(); ) {
    System.out.print(list.next());
}

遍历HashMap的四种方法

    //第一种:普通使用,二次取值(性能差)
System.out.println("\n通过Map.keySet遍历key和value:");
for(String key:map.keySet())
{
    System.out.println("Key: "+key+" Value: "+map.get(key));
}
//第二种:推荐,尤其是容量大时
System.out.println("\n通过Map.entrySet遍历key和value");
for(Map.Entry<String, String> entry: map.entrySet())
{
    System.out.println("Key: "+ entry.getKey()+ " Value: "+entry.getValue());
}

 

  1. 请写出线程(不)安全的类

Vector是线程安全的,ArrayList、LinkedList是线程不安全的

Properties是线程安全的,HashSet、TreeSet是不安全的

StringBuffer是线程安全的,StringBuilder是线程不安全的

HashTable是线程安全的,HashMap是线程不安全的

  1. 说出ArrayList,Vector, LinkedList的存储性能和特性

ArrayList和Vector都是使用数组方式存储数据,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,

Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差

LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。 

总结:

ArrayList,Vector都是使用数组方式存储数据,索引数据快而插入数据慢,Vector由于使用了synchronized(线程安全)所以效率比ArrayList差

LinkedList使用双向链表实现存储, 索引数据慢而插入数据快

  1. arraylist和hashset的区别

arraylist有顺序,

hashset没有顺序。

set没有键值和属性值,那是map

  1. hashmap和hashtable的区别
  1. hashMap去掉了HashTable 的contains方法,但是加上了containsValue()和containsKey()方法。2.hashTable同步的,而HashMap是非同步的,效率上hashTable要高。

3.hashMap允许空键值,而hashTable不允许。


http://lihuaxi.xjx100.cn/news/1358558.html

相关文章

【力扣算法16】之 18. 四数之和 python

文章目录 问题描述示例1示例2提示 思路分析代码分析完整代码详细分析运行效果截图调用示例运行结果 完结 问题描述 给你一个由 n 个整数组成的数组 nums &#xff0c;和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[…

Linux系统部署Tomcat详细教程(图文讲解)

前言&#xff1a;本篇博客教大家如何一步一步使用Linux系统去部署自己的Tomcat服务器&#xff0c;每一行代码都是我自己严格执行过的&#xff0c;共分为了8点进行阐述&#xff0c;逻辑清晰&#xff01; 目录 一、安装JDK环境 二、准备Tomcat安装包 三、安装Tomcat 四、配置…

Rancher 系列文章-RHEL7.8 离线有代理条件下安装单节点 Rancher

一 基础信息 1.1 前提 本次安装的为 20220129 最新版&#xff1a;Rancher v2.6.3VM 版本为 RHEL 7.8, 7.9 或 8.2, 8.3, 8.4(Rancher 官网要求&#xff09;VM YUM 仓库&#xff1a;已配置对应版本的 RHEL 和 EPEL YUM 仓库VM 提供 root 权限已配置 ntp&#xff08;防止因为时…

深入篇【C++】谈vector中的深浅拷贝与迭代器失效问题

深入篇【C】谈vector中的深浅拷贝与迭代器失效问题 Ⅰ.深浅拷贝问题1.内置类型深拷贝2.自定义类型深拷贝 Ⅱ.迭代器失效问题1.内部迭代器失效2.外部迭代器失效 Ⅰ.深浅拷贝问题 1.内置类型深拷贝 浅拷贝是什么意思&#xff1f;就是单纯的值拷贝。 浅拷贝的坏处&#xff1a; ①…

【Linux】VMware 安装 Centos7 超详细

1、下载✈ VMware链接&#xff1a;https://pan.baidu.com/s/1DnleWeV-JHjZiV9_ENwFmg?pwdb1tj 提取码&#xff1a;b1tj 阿里云镜像&#xff1a;centos安装包下载_开源镜像站-阿里云 CentOS官网镜像&#xff1a; Download 2、虚拟机准备 2.1、打开VMware选择新建虚拟机…

创新创业项目申报管理系统vue+nodejs+mysql

开发语言 node.js 框架&#xff1a;Express 前端:Vue.js 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发软件&#xff1a;VScode 本站是一个B/S模式系统&#xff0c;采用nodejs框架&#xff0c;MYSQL数据库设计开发&#xff0c;充分保证系统的稳定性。系统具有界…

C语言小项目——通讯录高阶(文件管理版)

通讯录初阶: 点这里 通讯录中阶: 点这里 文件管理版本改进之处通讯录初始化退出通讯录并保存 完整代码contact.hcontact.ctest.c 文件管理版本改进之处 通讯录初始化 contact.c 退出通讯录并保存 test.c contact.c contact.h 完整代码 contact.h #pragma once#include&l…

数据库信息速递 MONGODB 6.0 的新特性,更多的查询函数,加密查询,与时序数据集合 (译)...

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到3群&#xff08;共…