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

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

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

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

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

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

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

  3. 两种持久化方式会长久的存在,当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干货,希望来的是来学习一起共同努力进步的伙伴,一起加油!*

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值