java 需要准备的知识(转摘)
需要准备的知识
以下为在近期面试中比较有印象的问题,也就不分公司了,因为没什么意义,大致分类记录一下,目前只想起这么多,不过一定要知道这些问题只是冰山一角,就算都会了也不能怎么样,最最重要的,还是坚实的基础,清醒的头脑。
Java基础
- HashMap的源码,实现原理,JDK8中对HashMap做了怎样的优化。
- HaspMap扩容是怎样扩容的,为什么都是2的N次幂的大小。
- HashMap,HashTable,ConcurrentHashMap的区别。
- 极高并发下HashTable和ConcurrentHashMap哪个性能更好,为什么,如何实现的。
- HashMap在高并发下如果没有处理线程安全会有怎样的安全隐患,具体表现是什么。
- java中四种修饰符的限制范围。
- Object类中的方法。
- 接口和抽象类的区别,注意JDK8的接口可以有实现。
- 动态代理的两种方式,以及区别。
- Java序列化的方式。
- 传值和传引用的区别,Java是怎么样的,有没有传值引用。
- 一个ArrayList在循环过程中删除,会不会出问题,为什么。
- @transactional注解在什么情况下会失效,为什么。
数据结构和算法
- B+树
- 快速排序,堆排序,插入排序(其实八大排序算法都应该了解
- 一致性Hash算法,一致性Hash算法的应用
JVM
- JVM的内存结构。
- JVM方法栈的工作过程,方法栈和本地方法栈有什么区别。
- JVM的栈中引用如何和堆中的对象产生关联。
- 可以了解一下逃逸分析技术。
- GC的常见算法,CMS以及G1的垃圾回收过程,CMS的各个阶段哪两个是Stop the world的,CMS会不会产生碎片,G1的优势。
- 标记清除和标记整理算法的理解以及优缺点。
- eden survivor区的比例,为什么是这个比例,eden survivor的工作过程。
- JVM如何判断一个对象是否该被GC,可以视为root的都有哪几种类型。
- 强软弱虚引用的区别以及GC对他们执行怎样的操作。
- Java是否可以GC直接内存。
- Java类加载的过程。
- 双亲委派模型的过程以及优势。
- 常用的JVM调优参数。
- dump文件的分析。
- Java有没有主动触发GC的方式(没有)。
多线程
- Java实现多线程有哪几种方式。
- Callable和Future的了解。
- 线程池的参数有哪些,在线程池创建一个线程的过程。
- volitile关键字的作用,原理。
- synchronized关键字的用法,优缺点。
- Lock接口有哪些实现类,使用场景是什么。
- 可重入锁的用处及实现原理,写时复制的过程,读写锁,分段锁(ConcurrentHashMap中的segment)。
- 悲观锁,乐观锁,优缺点,CAS有什么缺陷,该如何解决。
- ABC三个线程如何保证顺序执行。
- 线程的状态都有哪些。
- sleep和wait的区别。
- notify和notifyall的区别。
- ThreadLocal的了解,实现原理。
数据库相关
- 常见的数据库优化手段
- 索引的优缺点,什么字段上建立索引
- 数据库连接池。
- durid的常用配置。
计算机网络
- TCP,UDP区别。
- 三次握手,四次挥手,为什么要四次挥手。
- 长连接和短连接。
- 连接池适合长连接还是短连接。
设计模式
- 观察者模式
- 代理模式
- 单例模式,有五种写法,可以参考文章单例模式的五种实现方式
- 可以考Spring中使用了哪些设计模式
分布式相关
- 分布式事务的控制。
- 分布式锁如何设计。
- 分布式session如何设计。
- dubbo的组件有哪些,各有什么作用。
- zookeeper的负载均衡算法有哪些。
- dubbo是如何利用接口就可以通信的。
缓存相关
- redis和memcached的区别。
- redis支持哪些数据结构。
- redis是单线程的么,所有的工作都是单线程么。
- redis如何存储一个String的。
- redis的部署方式,主从,集群。
- redis的哨兵模式,一个key值如何在redis集群中找到存储在哪里。
- redis持久化策略。
框架相关
- SpringMVC的Controller是如何将参数和前端传来的数据一一对应的。
- Mybatis如何找到指定的Mapper的,如何完成查询的。
- Quartz是如何完成定时任务的。
- 自定义注解的实现。
- Spring使用了哪些设计模式。
- Spring的IOC有什么优势。
- Spring如何维护它拥有的bean。
一些较新的东西
- JDK8的新特性,流的概念及优势,为什么有这种优势。
- 区块链了解
- 如何设计双11交易总额面板,要做到高并发高可用。
一些小建议
- 可以去leetcode上刷题换换思路。
- 八大排序算法一定要手敲一遍(快排,堆排尤其重要)。
- 了解一些新兴的技术。
- 面试之后面试官都会问你有没有什么问题,千万不要没问题,也别傻乎乎的问一些敏感问题。
- 了解你要面试的公司的产品及竞争产品。
几个链接
java 需要准备的知识(转摘)的更多相关文章
- Java 代码的基本知识(摘)
(摘自:Java经典入门教程) http://wenku.baidu.com/link?url=IoWI58cD5vzeHN-NL4pN7Gren-RfzydrhjDlETAByC9L-9ANinyL ...
- 【Java面试】基础知识篇
[Java面试]基础知识篇 Java基础知识总结,主要包括数据类型,string类,集合,线程,时间,正则,流,jdk5--8各个版本的新特性,等等.不足的地方,欢迎大家补充.源码分享见个人公告.Ja ...
- 第76节:Java中的基础知识
第76节:Java中的基础知识 设置环境,安装操作系统,安装备份,就是镜像,jdk配置环境,eclipse下载解压即可使用,下载tomcat 折佣动态代理解决网站的字符集编码问题 使用request. ...
- JAVA 变量 数据类型 运算符 知识小结
---------------------------------------------------> JAVA 变量 数据类型 运算符 知识小结 <------------------ ...
- Java面试题-基础知识
参考文章:Java面试题-基础知识 基础能力 什么是值传递和引用传递 线程状态有哪些,它们之间是如何转换的 进程与线程的区别,进程间如何通讯,线程间如何通讯? HashMap的数据结构是什么?如何实现 ...
- JAVA核心技术I---JAVA基础知识(工具类Arrays和Collections类)
一:工具类 –不存储数据,而是在数据容器上,实现高效操作 • 排序 • 搜索 –Arrays类 –Collection类 二:Arrays类(处理数组) (一)基本方法 –排序:对数组排序, sort ...
- JAVA核心技术I---JAVA基础知识(static关键字)
一:static特殊关键字用处 –变量 –方法 –类 –匿名方法 二:静态变量:类共有成员 –static变量只依赖于类存在(通过类即可访问),不依赖于对象实例存在. –所有的对象实例,对于静态变量都 ...
- Java JDBC的基础知识(三)
在前面的Java JDBC的基础知识(二)和(三)中,主要介绍JDBC的原理和简单的应用过程.尤其在(二)中,可以发现代码进行多次try/catch,还有在前面创建连接等过程中好多参数我都给写定了. ...
- Java JDBC的基础知识(二)
在我的上一篇Java JDBC的基础知识(一)中,最后演示的代码在关闭资源的时候,仅仅用了try/catch语句,这里是有很大的隐患的.在程序创建连接之后,如果不进行关闭,会消耗更多的资源.创建连接之 ...
随机推荐
- linux下xargs和管道的区别
管道将前面的标准输出作为后面的标准输入,xargs则将标准输入作为命令的参数 一.简介 1.背景 之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了x ...
- OAuth2.0学习(1-3)OAuth2.0的参与者和流程
OAuth(开放授权)是一个开放标准.允许第三方网站在用户授权的前提下访问在用户在服务商那里存储的各种信息.而这种授权无需将用户提供用户名和密码提供给该第三方网站. OAuth允许用户提供一个令牌给第 ...
- 【Vue中的swiper轮播组件】
<template> <swiper :options="swiperOption" ref="mySwiper"> <!-- s ...
- 在GridControl表格控件中实现多层级主从表数据的展示
在一些应用场景中,我们需要实现多层级的数据表格显示,如常规的二级主从表数据展示,甚至也有多个层级展示的需求,那么我们如何通过DevExpress的GridControl控表格件实现这种业务需求呢?本篇 ...
- 南京邮电大学java程序设计作业在线编程第二次作业
王利国的"Java语言程序设计第2次作业(2018)"详细 作业结果详细 总分:100 选择题得分:60 1. 表达式9==8&&3<7的运算结果是( ) ...
- POJ1017 Packets---贪心
题目链接: https://vjudge.net/problem/POJ-1017 题目大意: 公司共有底面面积为1*1.2*2.3*3.4*4.5*5.6*6,高度同为H的六种产品,现在需要用最少的 ...
- 图片处理之 Base64
网页上的图片资源如果采用 http 形式的 url 的话都会额外发送一次请求,网页发送的 http 请求次数越多,会造成页面加载速度越慢.而采用Base64格式的编码,将图片转化为字符串后,图片文件会 ...
- 关于jsp页面加载时报错500的问题
先说一下,问题的发生,个人做了个小系统,成品以后运行了几次,没有问题,结果最后一次测试时,发现登陆页面报错了: 账号密码输入正确,经过后台登陆后,按理说是应该进入登陆成功后的jsp页面,然而结果却是: ...
- Git reset到某一次commit
下图场景:张三和李四并行开发,张三提交commit1(bc2dd00),李四提交commit2(7f019d2),张三再提交commit3(44d4fc5),如果此时李四revert commit2, ...
- C#扩展方法(转)
扩展方法使您能够向现有类型"添加"方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型." 这是msdn上说的,也就是你可以对String,Int,DataRo ...