1.面向对象、面向过程 区别
2.Java 如何实现的平台无关
和C/C++不同的是,Java语言提供的编译器不针对特定的操作系统和CPU芯片进行编程,而是针对Java虚拟机把Java源程序编译成称为字节码的“中间代码”,然后Java虚拟机负责将字节码翻译成虚拟机所在平台的机器码,并让当前平台运行该机器码。
Java语言的运行原理:
在一个计算机上编译得到的字节码文件(就是.class文件),可以复制到任何一个安装了Java运行环境的计算机上直接运行。然后字节码文件由虚拟机负责解释执行,即Java虚拟机将字节码翻译成本地计算机的机器码,然后将机器码交给本地的操作系统运行。
由于在一个计算机上编译得到的字节码文件可以复制到任何一个安装了Java运行环境的计算机上直接使用,所以字节码其实是一种“中间代码”,这也就是为什么“Java语言能够一次编译,处处运行,也就是Java跨平台的原因。”所以称Java是一种“半编译,半解释的语言”,即源程序——>编译——>字节码——>字节码解释程序——>对应平台的机器语言。
3.值传递、引用传递
4.什么是序列化与反序列化、为什么序列化
5.死锁、死锁如何排查、如何确保线程安全
6.有哪些虚拟机性能监控与故障处理工具;(ps, jstack, jmap, jstat, jconsole, jinfo, jhat, javap, btrace, TProfiler)
7.了解 23 种设计模式
创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。
结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。
行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式(Interpreter 模式)、状态模式、策略模式、职责链模式(责任链模式)、访问者模式。
→ 会使用常用设计模式
单例的七种写法:懒汉——线程不安全、懒汉——线程安全、饿汉、饿汉——变种、静态内部类、枚举、双重校验锁
8.filter 和 listener
web.xml 中常用配置及作用
9.线上问题分析
→ dump 获取
线程 Dump、内存 Dump、gc 情况
→ dump 分析
分析死锁、分析内存泄露
→ dump 分析及获取工具
jstack、jstat、jmap、jhat、Arthas
10.常见问题解决思路
内存溢出、线程死锁、类加载冲突
→ 使用工具尝试解决以下问题,并写下总结
当一个 Java 程序响应很慢时如何查找问题
当一个 Java 程序频繁 FullGC 时如何解决问题
如何查看垃圾回收日志
当一个 Java 应用发生 OutOfMemory 时该如何解决
如何判断是否出现死锁
如何判断是否存在内存泄露
11.Java 的反编译工具
12.排序算法
13. 海量数据处理
14.大数据知识
15.网络安全知识
16. 注入攻击
SQL 注入、XML 注入、CRLF 注入
17.加密与解密
对称加密、非对称加密、哈希算法、加盐哈希算法
MD5,SHA1、DES、AES、RSA、DSA
18.分布式
数据一致性、服务治理、服务降级
19.算法
共识算法、Raft 协议、Paxos 算法与 Raft 算法、
20.微服务
→ Docker & Kubernets
→ Spring Boot
→ Spring Cloud
21.高并发
→ 分库分表
→ CDN 技术
→ 消息队列
22.监控
→ 监控什么
CPU、内存、磁盘 I/O、网络 I/O 等
监控手段
进程监控、语义监控、机器资源监控、数据波动
→ 监控数据采集
日志、埋点
23.搜索引擎
Solr、Lucene、Nutch、Elasticsearch
24.区块链
哈希算法、Merkle 树、公钥密码算法、共识算法、
Raft 协议、Paxos 算法与 Raft 算法、拜占庭问题与算法、消息认证码与数字签名
25.人工智能
数学基础、机器学习、人工神经网络、深度学习、应用场景。
→ 常用框架
TensorFlow、DeepLearning4J