java面试题有哪些?
谢邀。一般关于面试的Java框架都是根据你简历中之前项目用到的框架来问。题主没有问到具体的框架,我就谈谈目前公司招聘要求最多,也是公司用的最多的三个框架SSM。
关于spring:
1.谈谈你对Spring IOC和DI的理解,它们有什么区别?
3.请介绍一下Spring框架中Bean的生命周期和作用域
4.Bean注入属性有哪几种方式?
5.什么是AOP,AOP的作用是什么?
7.介绍一下Spring的事物管理
关于SpringMVC:
SpringMVC
- 什么是Spring MVC ?简单介绍下你对springMVC的理解?
- SpringMVC的流程?
- Springmvc的优点
- SpringMVC和struts2的区别有哪些?
- 如何解决POST请求中文乱码问题,GET的又如何处理呢?
Spring
- AOP(面向切面编程)的原理
- AOP的使用场景
- IOC(控制反转)的原理
- Spring框架中的单例bean是线程安全的吗?
- 常用的注解
- 用到的设计模式
- Spring的优点(解耦、很多主流框架的集成 低侵入式设计,代码的污染极低 等等)
- SpringBean的作用域
- 事务机制
- Spring的核心类,及作用 如BeanFactory、applicationContext、BeanWrApper
- Spring支持的ORM?
- BeanFactory 接口和 ApplicationContext 接口有什么区别 ?
- 依赖注入的方式有几种:接口注入、Setter注入、构造方法注入
Mybatis
- 什么是mybatis?
- MyBatis与Hibernate有哪些不同?
- Mybait的优缺点
- 常见的标签
- 分页及常用的分页插件
- #{}和${}的区别是什么?
- 一对一、一对多的关联查询 ?
- Mybatis的一级、二级缓存:
- Mybatis比IBatis比较大的几个改进是什么?
- IBatis和MyBatis在核心处理类分别叫什么?
- IBatis和MyBatis在细节上的不同有哪些?
- 为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里?
- MyBatis与Hibernate有哪些不同?
Hibernate
- Hibernate工作原理
- Hibernate是如何延迟加载(懒加载)?
- 缓存机制(一级缓存、二级缓存)
- Hibernate的查询方式有几种Hibernate中s***e、persist和s***eOrUpdate这三个方法的不同之处?
- get()与load()的区别
- Hibernate中的SessionFactory有什么作用? SessionFactory是线程安全的吗?
SpringBoot
- 常用的starter有哪些
- Spring Boot 的配置文件有哪几种格式?它们有什么区别?
- Spring Boot 的核心注解是哪个?常用的注解(如@EnableEurekaClient
- @EnableFeignClients @FeignClient @EnableTransactionManagement
- @RestController @Configuration @Order @ControllerAdvice等)
- Spring Boot 需要独立的容器运行吗?( 可以不需要,内置了 Tomcat/ Jetty 等容器。)
- 运行 Spring Boot 有哪几种方式?
- SpringBoot与SpringCloud的关系
- SpringCloud的各类组件(Feign、Eureka、Hystrix等)的理解及使用
Nginx
其他
NoSQL:redis、Memcache和MongoDB等的区别、使用
xml解析(DOM解析、SAX解析、JDOM解析、DOM4J解析)
POI实现Microsoft Office格式档案读和写的功能
多线程、线程池的原理及实现
设计模式
Kafka、MQ等消息机制
Sql优化
jvm原理
常用搜索引擎Elasticsearch等
我也是一直做j***a开发很多年啦,经历过的面试很多了,大公司小公司都待过,给你一些建议吧。
1、j***a基础知识。比如面向对象的特征、多态、访问修饰符范围、static和final关键字、抽象类与接口、深拷贝与浅拷贝、序列化与反序列化、几种数据结构、拆箱与装箱
2、j***a***相关的。比如***框架理解、list、set、hashmap底层实现以及区别?hashmap底层原理,put和get方法怎么实现的?hashmap与hashTable区别?concurrentHashMap底层实现?
3、j***a异常处理。异常分类?编译时异常与运行时异常区别?举例子有哪些运行时异常?
4、jvm[_a***_]模型。以及GC垃圾回收机智和算法。
5、spring相关。解释IOC和AOP,以及他们的原理。bean生命周期
6、mysql。索引是什么?索引分类?索引优化?
8、dubbo。dubbo服务注册与发现。服务负载均衡算法,dubbo配置与使用。
谢邀回答!!!😄😄😄
我认为,J***a面试试题众多,重在对基础理论知识和实际操作的考核,给你一些面试题目(由于篇幅有限,答案省略),主要有:
1. 什么是Spring MVC框架的控制器?
2.SpringMvc的控制器是不是单例模式,如果是,有什么问题,怎么解决?
3.结合项目谈谈你对 MVC 的理解?
4.什么是Spring MVC?SpringMVC的工作流程是什么?
5.SpringMVC的优点是什么?
6.SpringMVC与Struts2的区别?
7.Spring框架分为哪七大模块,各模块的主要功能作用是什么?
1.什么是B/S架构?什么是C/S架构
3.J***a都有那些开发平台?
4.什么是JVM?j***a虚拟机包括什么?
JVM:j***a虚拟机,运用硬件或软件手段实现的虚拟的计算机,J***a虚拟机包括:寄存器,堆栈,处理器
5.J***a是否需要开发人员回收内存垃圾吗?
大多情况下是不需要的。J***a提供了一个系统级的线程来跟踪内存分配,不再使用的内存区将会自动回收
6.什么是JDK?什么是JRE?
JDK:j***a development kit:j***a开发工具包,是开发人员所需要安装的环境
JRE:j***a runtime environment:j***a运行环境,j***a程序运行所需要安装的环境
大型互联网企业是如何面试j***a初级工程师?面试题有哪些?
近期面试了京东金融、京东商城、蚂蚁金服、搜狗、58,面试经验大体总结如下:1. dubbo:rpc底层调用原理和过程、负载均衡规则、如何进行版本控制2. redis详细原理:哨兵机制、主从复制、支持类型、如何实现一个自己的缓存3. kafka详细原理:消息可靠性设计、重复消费、消息丢失等问题、原理4. 数据库:(1)事务、锁、索引原理和各种优化、数据库事务隔离级别和各种锁如何实现ACID、mysql主从***原理(2)分库分表:非分表主键跨库查询、跨库分页、分页查询优化等5. JVM调优:调优方法、垃圾回收原理和优缺点、各种GC原理区别、如何确定哪些对象应该回收方法6. 其他分布式:(1)分布式锁: 各种实现方式,redis实现如果宕机锁没有释放各种处理方案?(2)分布式事务: 全部(3)分布式全局唯一ID:各种实现方式(4)压测过程(5)幂等性、一致性、削峰限流等实现方案10.基础问题:(1)HashMap、concurrentHashmap、treeMap、atomic...等底层原理和实现机制?hashmap遍历的方式?(2)线程池实现原理和常用参数?(3)countDownLatch使用场景和具体写法?(4)多线程相关:servlet是否线程安全?实现线程顺序执行?volatile\synchronized\reetrantLock区别和底层实现原理?countDownLatch和CyclicBarrier区别和应用场景实现方式等?如何解决OOM/CPU100%等?(5)object常用方法?原理和区别?11.算法相关(1)单例模式各种写法、优缺点(2)各种排序算法、查询算法(3)二叉树、B、B+等原理、区别(4)顺序数组快速查找和统计指定重复数字的个数?
由于我经常被邀请做为一些大型互联网企业的面试官,所以我来回答一下这个问题。
一般面试初级J***a工程师都是应届毕业生或者是1至2年左右工作经验的程序员较多,这两种情况虽然面试的都是初级程序员的岗位,但是面试的要求上还是有所区别的。
应届毕业生
针对于应届毕业生来说,面试官最为关心的内容是面试者的知识结构是否健全。往往面试官在筛选的时候首要考虑的是学校,然后是专业,然后是知识的掌握情况。因为有不少科技公司在招聘应届毕业生的时候都有学校上的要求,有的要求985,有的要求211,当然也有只要求本科就可以的。
在符合基本招聘条件之后,面试官会进一步了解面试者的知识结构,往往第一个要求就是算法要求,比如给出两个算法来解决一个问题,让面试者聊一聊应该选择哪一个等等。然后会问一问对J***a语言的了解程度,做过哪些实验等等。当然,对应届生来说对J***a语言的掌握程度要求并不高,能把基本的封装、继承、多态说清楚就可以了。
有一定工作经验
对于有一定工作经验的面试者来说,面试官的问题就会具体的多。首先面试官会对你从事的领域做一个大致的了解,比如是电商领域还是金融领域等等,然后会针对这些领域的常见问题进行进一步了解。
这部分面试主要考虑的是项目经验,面试者一定要实事求是,因为技术问题的答案通常都是比较明确的,如果没有做过基本上是不会正确回答的,所以一定要把自己做的项目讲清楚,以便于面试官可以跟你进行具体的交流,否则就很容易面试失败。
对于初级程序员来说,目前很少企业会准备面试题,一方面这很难能全面了解程序员的真实水平,另一方面也降低了面试的效率。如果有面试题,也基本上以基础概念为主。
我目前在带移动互联团队和大数据团队,我会陆续在头条上写一些相关的科普文章,感兴趣的朋友可以关注我的头条号,相信一定会有所收获。
如果有软件开发方面的问题,可以咨询我。
谢谢!