java相关问题——大数据开发

1.linux系统的常见命令

查看系统进程

2.线程的各种状态

  • 新建:新建了一个线程对象
  • 可运行:线程对象创建后,其他线程比如main线程调用了该对象的start()方法,该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu的使用权
  • 运行:可运行状态的线程获得了cpu时间片,执行程序代码
  • 阻塞:线程因为某种原因放弃了cpu使用权,暂时停止运行,直到线程进入可运行状态,才有机会获得cpu timeslice转到运行状态
    • 等待阻塞:运行的线程执行wait方法,jvm会把该线程放入到等待队列中
    • 同步阻塞,运行的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则jvm会把该线程放入锁池中
    • 其他阻塞:运行的线程执行sleep或者join方法时,jvm会把该线程设置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时,线程重新转入可运行状态
  • 死亡:线程run()、main()方法执行结束,或因异常退出了run方法,则该线程结束生命周期,死亡的线程不能再次复生

3.线程池重要的参数

ThreadPoolExecutor类是java线程池中的核心类

4.LinkedList和ArrayList的区别和联系

都实现了List接口,存储有序的数据

5.详细讲讲Hashmap,是不是线程安全的,put方法是头插还是尾插

不是线程安全的,是尾插

6.用什么类代替hashmap并且保证线程安全

Hashtable类,可以存储key-value数据,并且sychronized线程安全

7.mysql的联合索引

8.如何查看在执行sql的过程中索引有没有命中(提到了explain)

9.对Swing的看法,有什么优缺点

10.什么是ssm

11.使用mybatis的感受,mybatis有什么优缺点,你是怎么改进的

12.spring的aop是怎么实现的

13.什么是反射

14.面向对象的几大特性,你是怎么理解的

15.TCP有几种状态

16.TCP为什么要三次握手四次挥手以及基本流程

17.红黑树的插入和删除

18.HashMap jdk1.7和jdk1.8的区别

19.redis的分布式锁怎么实现

20.mysql索引结构以及区别

21.B+树有什么好处

  • 磁盘读写代价更低,非叶子结点的信息更少,如果把同一结点的所有信息放在一个磁盘块中,则可以比B树放入更多的关键码,一次读入内存当中就能读入更多的关键码,所以降低了磁盘IO总数。B+树更加矮胖
  • 查询效率更加稳定,对任何关键字的查找都必须从根节点走到叶子结点,路径长度相同,所以对每条数据的查询效率相当
  • B+树叶子结点有链指针存在,所以遍历叶子结点就可以实现对整棵树的遍历,而在数据库中基于范围的查询是非常频繁的,B+树能更好的支持。

22.线程池的原理

23.spring的核心思想

24.synchronized和reentrantlock的区别

25.synchronized的优化(偏向锁和轻量级锁)

26.层序遍历建树&层序遍历树

27.TCP和UDP的区别

28.TCP的状态机图

29.线程间同步具体用什么函数

30.rpc的原理

31.resultfullApi的几个方法,以及区别(安全性,幂等性)

32.手撕单例模式

33.手撕hashmap

34I/O多路复用的区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值