美文网首页
Java Interview 总结(未完)

Java Interview 总结(未完)

作者: 抄无止境 | 来源:发表于2019-11-15 22:14 被阅读0次

1.关于Java基础问题?

1.1 什么时候用get?什么时候用post?
(1)post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)
(2)post发送的数据更大(get有url长度限制)
(3)post能发送更多的数据类型(get只能发送ASCII字符)
(4)post比get慢
(5)post用于修改和写入数据,get一般用于搜索排序和筛选之类的操作(淘宝,支付宝的搜索查询都是get提交),目的是资源的获取,读取数据

什么时候用get?什么时候用post?

2.关于项目架构及项目中逻辑问题?

3.关于JDK不同版本特性问题?

4.关于异常检测问题?

1.如果程序出了异常情况,除了查看线上日志外,或者线上日志记录的不是很详细,查找不到这个异常,应该怎么做处理?

了解下Arthas

5.关于JVM问题?

1.排查Java的CPU性能问题

 1.ps | grep 组合命令, 方便快速找到进程id(java有自带的jps工具)
 2.vi/tail/head/more/less: 查看线上日志的工具,注意不要用vim打开打日志,往往会给(内存)负担过重的服务器致命一击
 3. awk 文本分析脚本,可以快速分析性能、业务日志,得出结果,不用等大数据平台一系列流程
 4. top:查看进程(和线程)的cpu耗时,内存占用情况
 5. iotop:查看进程和线程的IO消耗情况 (需要自行安装)
 6. iftop:查看进程和线程的网络情况 (需要自行安装)
 7. lsof:查看文件打开情况(含网络、本地文件、设备等)
8.JVM系列tools (本文重点)
  8.1 jstat:查看进程内存分配和gc情况
  8.2 jstack:查看进程的线程栈
  8.3 jmap:dump java 内存。(不要对在线提供服务的应用做jmap)
  8.4 btrace:运行中的代码调试
  8.5 jprofile: 外挂的形式,分析具体到方法级别的相应耗时,压测配合jprofile,能直接找到瓶颈
IBM Memory Analyzer Tool, 简称MAT,用于分析 jmap 命令dump出来的内存文件
监控工具
  10.1 zabbix:观察系统的历史性能状态(顺便告警)
  10.2 ganglia:观察系统的历史性能状态
  10.3 vision: 我司内部自研系统,观察业务的性能数据,QPS vs RT
  10.4 各式APM工具,比如OneAPM,听云等,通过javaagent的方式实时分析程序的性能问题

6.关于GC问题?

7.关于多线程问题?

1.1 HashMap工作原理?
1.1 ConcurrentHashMap工作原理?

8.关于高并发问题?

9.关于SSM | SSH框架问题?

Spring中AOP在项目中应用场景有哪些?
SpringMVC的实现流程(常问到)?
Mybatis的分页是怎么做的?

10.关于设计模式?

1.常用的设计模式有单例模式、工厂模式、观察者模式、
2.项目中用到的设计模式有哪些?框架中用到的设计模式有哪些?
注意:学习设计模式的时候要常问自己:这个设计模式为了解决什么场景下的问题?有什么优点?有什么缺点?有没有更好的解决方案?

  1. java设计模式面试考点

11.关于算法?

Spring的两大特性?

10.关于缓存问题?

1.Redis
2.Mongdb
3.Memcache

11.关于数据库性能问题?

1. 插入一万条数据,怎么插入?
2.switch语句后面不加break结果是什么?(基础中的基础问题)

  switch语句后不加break,那么代码会一直顺序执行下去(忽略后面的case条件判断),直到break或是end语句

3.什么是进程,什么是线程?
  • 进程可以看成程序执行的一个实例。进程是系统资源分配的独立实体,每个进程都拥有独立的地址空间。
  • 线程是进程中的一个实体,是CPU调度和分派的基本单位;

3.1 线程之间是怎么通信的?

  • 线程可以共享同一个数据源,记得加锁
  • ThreadLocal实现线程内部数据的共享,不同线程数据不会共享‘
    3.2 进程之间是怎么通信的?
  • 管道
  • FIFO
  • 消息队列
  • 信号量
  • 共享内存

进程间的五种通信方式介绍

3.3 两个线程之间有什么关联?

  • 同步
  • 互斥:线程间“锁住某一资源”的状态
4.什么是线程同步,什么是线程异步?
  • 线程同步:是多个线程同时访问同一资源,等待资源访问结束,浪费时间,效率低
  • 线程异步:访问资源时在空闲等待时同时访问其他资源,实现多线程机制
4.什么是栈?什么是堆?

4.1 定义一个全局静态变量,存放在了栈中还是堆中?

  • 带static就是在静态存储区
  • 是存放于栈中
5.Redis把数据存储到db的策略是什么?

redis提供两种不同持久化方式来将数据存储到硬盘:
第一种:快照模式(RDB)可以将存在某一个时间点上所有数据写入硬盘
第二种:追加文件模式(AOF),在执行写命令时候将这条命令复制到硬盘

Redis数据结构以及对应存储策略

5. Redis集群是怎么实现数据同步的?

1.当一个从数据库启动时,会向主数据库发送sync命令;
2.主数据库接收到sync命令后会开始在后台保存快照(执行rdb操作),并将保存期间接收到的命令缓存起来;
3.当快照完成后,redis会将快照文件和所有缓存的命令发送给从数据库。
4.从数据库收到后,会载入快照文件并执行收到的缓存的命令。

5.Zookeeper是什么?

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务

5.1能做什么?
1.配置管理
2.名字服务
3.分布式锁
4.集群管理

5.Zookeeper是怎么选举leader的?
6. Zookeeper是怎么实现数据同步的?
7.如果程序出了异常情况,除了查看线上日志外,或者线上日志记录的不是很详细,查找不到这个异常,应该怎么做处理?
5.Spring中Bean的作用域?
9.数组用remove会出现异常吗?
10.除了用get和post请求外,你还用到过什么请求?

HTTP 从网络获取信息的四种方式:GET、POST、PUT、DELETE

相关文章

网友评论

      本文标题:Java Interview 总结(未完)

      本文链接:https://www.haomeiwen.com/subject/frykictx.html