满满java面试题干货,初级java工程师都掌握了看看你掌握了吗?(面试题)

    技术2025-04-19  9

    对于大部分人而言,在找工作之前少不了准备工作,有一份全面细致面试题将帮助大家减少许多麻烦。所以准备找工作的小伙伴可以看参考一下哦!

    redis 相关 redis 有几种数据结构 redis有五种数据结构,分别是String(字符串),Hash(字典),List(列表),Set(集合),Sorted Set(有序集合)

    这五种数据结构是redis的五种数据结构

    Redis持久化方式 redis持久化方式有两种,分别是快照和追加式文件,

    对于快照而言,持久化会在特定的时间间隔,保存时间点的数据快照。

    追加式文件持久化方式服务器在收到写操作的时候,在服务器启动的时候,会逐条的执行,从而重建里面的数据,写操作记录的格式和redis协议一样,以追加的方式保存。

    两种持久化方式会长久的存在,当redis重启的时候,追加式文件则会优先用于重建数据。

    Java数据结构 Java 有以下几种数据结构,

    List List 存放的是有序的可重复的。List关注的是索引,拥有一系列和索引相关的方法,查询速度快。

    Set Set 存放的是无序的不能重复的,集合中的对象,只是简单的把对象加入到集合中。

    Map Map 存放的是键值对,键可以重复,值可以重复,根据键得到值,对map集合遍历的时候,先得到set的键的集合,对set集合进行遍历,得到相应的值。

    redis 锁 锁 锁一共有三种锁,分别是线程锁,进程锁,分布式锁。

    线程锁 对于线程锁而言,主要用来给代码块,方法加锁,当某个方法或者代码使用锁的时候,在同一时刻,只有一个线程执行该方法或者代码块,线程锁只在同一JVM中有效果,因为线程锁的实现在根本上是依靠线程之间共享内存实现,例如synchronized是共享对象头,显示锁Lock是共享某个变量。

    进程锁 为了控制同一操作系统中,多个进程访问共享资源,因为进程具有独立性,各个进程无法访问其他进程资源,因此无法通过synchronized等线程实现进程锁

    分布式锁 当多个进程不在同一操作系统中,用分布式锁控制多个进程对资源的访问。

    锁的自旋 锁的自旋使用的是CAS算法算法,当一个线程在获取锁的时候,如果锁已经被其他线程获取,那么该线程将会循环等待,然后不断的判断锁能否成功的获取,直到获取锁才能够退出循环。

    redis 锁基本命令 在redis里添加key作为redis锁,跑完自动进行delete。

    redis 死锁解决办法 这里对redis进行死锁,通过时间控制,把redis超时作为控制,或者redis的value作为时间控制。

    ArrayList 扩容 初始数组容量为10,获取到扩容的容量,复制到当前的数组。

    每次扩容1.5 倍。

    LinkList扩容 底层维护的是双向列表,有前后的指针进行维护。

    Java 数据类型各占几个字节 byte 1个字节。

    short 2字节。

    int 4个字节。

    long 8字节。

    float 4个字节。

    double 8字节

    char 2字节

    boolean 1字节。

    如何计算 用MAX_获得

    例如

    Integer.MAX_ 编程题 public class C1 { public int stuId; // 学生学号 public int courseId; // 课程编号 public int score; // 分数

    /** 将学生成绩列表转换成两级的Map,用于查询任意学生的任意课程成绩 参数 list : 一个学年学生一学期全部课程成绩 返回值Map的key是学生学号,value 的map key是学生的课程编号, value 该学生这门课的成绩 **/ public static Map<Integer, Map<Integer, Integer>> toMap(List<C1> list) { }

    } 答案 Map<Integer,Map<Integer,Integer>> map = new HashMap(); for(C1 tmp:list){ if(map.get(tmp.stuId) == null){ Map<Integer,Integer> grade = new HashMap(); grade.put(tmp.coureseId,tmp.score); map.put(tmp.stuId, grade); } else map.get(tmp.studId).put(tmp.coureseId,tmp.score); } return map;

    今天的分享就到这里,因为平台限制许多内容未能呈现给大家,个人手头上的学习资料及相关经验总结有需要、感兴趣的朋友可以加下方小编微信获取“guigui758758” 也可以来我的qq群:1071760506,里面有许多java干货,希望来的是来学习一起共同努力进步的伙伴,一起加油!*

    Processed: 0.008, SQL: 9