1998年互联网崛起,程序人奋勇前行;If,程序基本逻辑,开启程序人生[if98];谨以此站献给奋斗中的你

发表文章 上传软件
当前位置: 主页 > 程序人生 > 感悟/杂谈 >

2018Java面试问题总结收藏挑错

2018-08-04 15:35 采编:程序人生 阅读 投稿赚币
以下问题都是自己经历十多家公司被问到的面试问题,基础还是很重要的,把每个问题按自己查的资料精简整理出一套答案会印象很深刻哦。 一 技术篇 (1)JVM内存 1、 Jdk1.8新增的特性

以下问题都是自己经历十多家公司被问到的面试问题,基础还是很重要的,把每个问题按自己查的资料精简整理出一套答案会印象很深刻哦。

一 技术篇 
(1)JVM内存 
1、 Jdk1.8新增的特性 
2、 JVM加载机制,类加载器的一个过程 
3、 JVM内存模型,尤其注意每块内存存放哪些(类信息、常量在哪个区) 
4、 垃圾回收机制,如何判断对象不可达? 
5、 导致内存泄露的一些场景

(2)多线程、线程池 
1、 线程与进程区别 
2、 线程的状态、状态变化 
3、 线程常用的方法 
isAlive() 
join() 
interrupt() resume() 
Stop() 
Yield() 
4、 Synchronized底层实现原理 
5、 乐观锁与悲观锁、公平锁与非公平锁、共享锁与拍他锁 
6、 CAS实现原理(compare and swap),是乐观锁实现的一种方式,优缺点、使用场景,与Synchronized使用场景对比 
7、 死锁条件、如何避免死锁、死锁出现后处理方法 
8、 Lock与Synchronized区别 
9、 Volitale关键字 
10、 ThreadLocal关键字 
11、 Lock与Synchronized区别 
12、 线程同步方式有哪些 
13、 静态方法和普通方法同时加上synchronized关键字有什么区别 
14、 信号量 
15、 线程池构造方法,每个入参含义(重要) 
16、 线程池方法、线程池状态及状态转变 
17、 线程池拒绝任务策略 
18、 如何合理配置线程池大小 
19、 使用场景 
20、 使用线程池注意事项(死锁、线程泄露、系统资源不足),应该遵循什么规则、 
21、 线程池分类 
22、 Spring中注入线程池配置

(3)集合 
1、 Map set是否允许key重复 
2、 Hashmap实现原理 
3、 concurrenHashMap实现原理,注意jdk1.7 1.8对比 
4、 Hashmap与hashTable区别 
5、 红黑树实现原理 
6、 线程安全的list集合 
7、 LinkedList和ArrayList区别 
8、 TreeMap有序

(4)Spring相关 
1、 SpringMVC工作原理,常用的接口类,常用的注解 
2、 SpringmVC是不是线程安全的 
3、 SpringMVC异常处理、日志处理 
4、 Spring Bean的生命周期 
5、 Springbean的实例化过程 
6、 SpringBean配置方式、加载顺序 
7、 Springmvc拦截器常用方法 
8、 Spring事务管理方式、隔离界别、传播特性 
9、 Spring AOP原理 
10、 @resource与@autowired区别

(5)Mybatis(问的不是很多,问细节就说长时间不用有点不太记得了) 
1、#和$区别(被问到了三次) 
2、mybatis xml中常见标签 
3、当实体类中的属性和表中字段不一样怎么办 
4、mybatis如何分页的

(6)Hibernate 
1、 hibernate缓存机制,一级缓存和二级缓存 
2、 hibernate中get和load有啥区别 
3、 对象存活状态(瞬时、持久、游离)

(7)Redis 
1、 缓存穿透与缓存雪崩现象,如何避免? 
2、 Redis与memcache对比,redis优势 
3、 Redis如何实现主从同步 
4、 Redis持久化方式 
5、 Redis有哪几种数据淘汰策略 
6、 为什么redis需要把所有数据放到内存中 
7、 Redis集群方案有哪些 
8、 Redis有哪些适合的场景(会话缓存、队列、排行榜、计数器、发布订阅) 
9、 Redis事务管理 
10、 Redis缓存如何扩容

(8)Mysql 
1、 mysql常用引擎 
2、 mysql索引类型 
3、 select * from table where goup by having select from group by having四个关键字执行顺序 
4、 sql优化 
5、 数据库优化(索引表优化、分库分区分表、sql优化等等) 
6、 Mysql主从复制如何实现 
7、 JDBC如何防止sql注入 
8、 Mysql一张表的索引最多能有多少 
9、 B-Tree的结构 
10、 Myslq 的explan计划有了解么 
11、 分页查询如何提升效率

(9)性能优化 
排查问题方式,jstack等 进程僵死等

(10)算法 (注意每个时间复杂度) 
1、 字符串反转 reserve 
2、 反转二叉树实现 
3、 二分查找法 
4、 冒泡排序 
5、 快速排序 
6、 选择排序 
7、 用栈实现队列 
8、 堆排序(不太重要,面试题遇到一次,没写) 
9、 整数去重

(11)Java设计模式及其他 
1、 Java反射机制 
2、 Java设计模式(单例模式、工厂模式等等,说出两个及其应用场景,这里尤其注意单例模式中懒汉模式的代码一定要会写,其中有个双重锁机制注意,基本都会让写) 
3、 远程调用协议tcp(三次握手的过程注意掌握)RPC RMI webservice hession等区别 
4、 Session共享实现机制、单点登录实现原理 
5、 Final关键字 final修饰hashmap时,key value可以变么 
6、 Hashcode和equals 重写equals一般都要重写hashcode(这个还是蛮重要的) 
7、 抽象类和接口区别 
8、 String底层实现 
9、 Session和cookie区别

二 项目篇 
1、 挑一个你印象深刻的项目讲一下吧(用户量、业务逻辑、用到技术、你承担的内容、学到的东西),逻辑 条例 
2、 说下你项目中遇到的棘手的问题(把多线程死锁场景准备一两个、查问题方式啥的,可以从技术、经验学习角度出发) 
3、 项目的拓扑图、框架 
以下问题都是被问到的开放性提,我不会哦 
4、 目前系统支撑用户量提升10倍,系统出现问题,如何重新设计 
5、 热点账户问题 
6、 服务器反应慢,如何排查 
7、 跟踪一个方法的用时,并且最小限度干涉业务程序、 
8、 分布式如何实现id自增 
9、 秒杀解决方案

三 Hr面试篇 
1、 请自我介绍(调理清楚,和简历匹配,不谈与工作无关的 姓名,工作经历,突出个性和做事能力,谢谢) 
2、 为什么离职?(一定要找好原因,无懈可击) 
3、 你找工作时,最重要的考虑因素为何? 
4、 谈谈你的缺点,个性上的优点 
5、 你觉得你和同龄人比,你的优势是什么?为什么我们录用你 
6、 谈下你的职业规划或者目标吧 
7、 给你一个任务你会怎么做 
8、 你平时是通过什么学习的 
9、 你还有什么问题么?(不要主动提薪资,也不要说没问题,询问工作职责业务范畴之类的就可以) 
10、 期望薪资

四 提问篇 
1、 公司对该职位的要求是什么,这份工作最大的挑战是什么?(可以套出面试者是否对自己满意,也可以对比自身与职位的差距) 
2、 入职后的具体工作内容(看是否是核心部门的核心内容,自己是否擅长或者感兴趣,当出现多家offer时候可以根据工作内容进行对比) 
3、 公司用的框架技术(看是否是自己感兴趣的技术) 
4、 公司的升迁渠道,是否有晋升的机会 
5、 可以反问hr来公司多久了,他觉得公司对他最吸引的部分是什么

谈到薪资后,针对薪资一定要问好,别offer下来了又纠结忘记问了 
6、 薪资待遇(薪资组成、奖金) 尤其要问是否有涨薪制度,以确保能长期呆下去 
7、 各种福利(五险一金比例)

相关标签:
程序人生if98.com,专注IT人成长、所需、职场,欢迎参与撰稿、分享资源!

扫一扫关注程序人生公众号

免责声明:本文内容由[程序人生]用户自行发布或编辑转载,本站不拥有所有权、不承担相关法律责任。 如发现有涉嫌抄袭的内容,可邮件 web@if98.com 举报,并提供证据,一经查实,本站将立刻删除涉嫌侵权内容。

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片

站长推荐dedecms模板

站长推荐资源下载

站长推荐文章

论坛推荐

关于我们

微信公众号

扫码关注官方微信

返回顶部