1、面向对象语言的三个特性?分别解释下三个特性含义?举例说明?

答:封装、继承和多态。

2、类和对象的区别是什么?Java 中覆盖和重载是什么意思?Object类中有哪些方法?== 和 equals的区别?

3、抽象类和接口的区别,引申提问:什么是面向接口的编程,有何好处?

4、JAVA常见集合类,HashMap实现原理,,ConcurrentHashMap 和 HashMap 的区别,ArrayList如何排序,List、Set、Map是否都继承自Collection接口?HashMap中是否任何对象都可以做为key,用户自定义对象做为key有没有什么要求?一个Java对象作为Map的Key时需要满足的前提条件是什么?

5、Java异常处理机制,有哪几种类型异常,说出编码中遇到的常见异常(10种以上)。

6、请描述一下Java的IO体系?字节流转换成字节流?

7、 线程的基本概念、线程的基本状态以及状态之间的关系。线程的同步、如何实现线程的同步

8、 Synchronized和lock区别

9、 如何实现多线程?java 并发包中相关类是否有了解和使用?如何理解线程安全性?ReentrantLock 实现,以及其内部同步器Sync的实现原理?

10、 wait/notify 语义,如何实现线程协作?CountDownLatch CyclicBarrier BlockingQueue

11、AtomicInterger、AuomicBoolean高并发高效,共同原因是什么?CAS 无锁算法,比较交换

12、Threadlocal是什么,原理是什么,在哪些场景可以使用?

答:是Thread的局部变量,作用:ThreadLocal是解决线程安全问题一个很好的思路,它通过为每个线程提供 一个独立的变量副本解决了变量并发访问的冲突问题。

13、 Atomic future callable executor分别有什么作用,简单介绍下。

14、 并发编程,可见性和顺序一致性区别,如何保证?

可见性:当一个共享变量被多个线程进行操作的时候,如果变量的值被一个线程修改了,那么另外的一个线程能够知道这个变量的新值。

顺序一致性:顺序一致性内存模型是一个理论模型。有两大特征

1.一个线程中的所有操作必须按照程序的顺序来执行

2.所有线程都只能看到一个单一的操作执行顺序。(每个操作都必须原子执行且必须立刻对所有的线程可见)

15、java内存模型,堆和栈区别,垃圾回收机制,垃圾回收算法

16、JAVA 8有哪些新特性,分别有什么作用,对我们编程有什么改变,在哪些场景中使用过这些新特性?

答:1. Lambda 表达式

  1. 强大的 Stream API(集合数据的操作)

  2. 最大化的减少空指针 异常:Optional 类 的使用

  3. 函数式接口

  4. 注解的新特性

  5. 集合的底层 源码实现

  6. 新日期时间的 api

17、设计模式,举例说明jdk或其他框架中的设计模式。自己在实践中有使用过哪些设计模式?有什么心得?

UML建模(组合、聚合、关联、依赖)

设计模式6大原则,23种模式。

18、 介绍什么典型设计模式意图和适用场景,如单例模式,装饰者模式(Decorator)等,给出一个相关例子?

19、 性能优化方面有哪些手段?看其是否在db,程序,前端,缓存,分布式运算等方面是否有了解,是否了解性能分析工具(如候选人不理解可再假设场景引导)

20、了解java吗?运行一个hello world程序,有哪些过程?

21、了解JVM启动参数吗?-verbose -Xms -Xmx的意思是什么?

-verbose[:class|gc|jni] enable verbose output

-verbose:gc 控制台显示垃圾回收信息

-Xms 最小堆的大小,当虚拟机启动后,分配的堆内存给你。

-Xmx 最大堆的大小。当最小堆占满后,会尝试gc,如果GC之后还不能得到足够的内存

22、 关于GC,有过了解么?如果要你的C程序添加GC的功能,你要怎么做?

23、 java类加载顺序,是否了解parent delegate机制?为什么要采用这样的加载机制?怎样打破双亲委派?

24、 你碰过几种类型的OutOfMemory错误,都是什么原因造成的,如何解决的?

25、 servlet有过了解么?它是怎么运作的?Servlet生命周期,是否线程安全,监听器和过滤器用途

26、 如何编写一个通过浏览器可以访问的servlet,servlet是不是线程安全的,servlet在MVC模式中承担什么角色?

27、 JAVA SERVLET API中forward() 与redirect()的区别

28、 cookie与session的区别

29、 了解spring框架吗,描述一下对Spring框架的理解,Spring的核心理念?简述spring中bean的生命周期管理

30、 AOP的原理及作用?IOC原理及作用?spring如何实现事务?

31、什么是MVC,spring mvc工作机制,核心类,一个请求的流程?

32、什么是SpringBoot?

1、用来简化spring初始搭建和开发过程使用特定的方式进行配置(properties或者yml文件)

2、创建独立的spring引用程序main方法运行

3、嵌入Tomcat无需部署war包,直接打成jar包nohup java -jar – & 启动就好

4、简化了maven的配置

4、自动配置spring添加对应的starter自动化配置

33、SpringBoot常用的starter:

1、spring-boot-starter-web(嵌入Tomcat和web开发需要的servlet和jsp支持)

2、spring-boot-starter-data-jpa(数据库支持)

3、spring-boot-starter-data-Redis(Redis支持)

4、spring-boot-starter-data-solr(solr搜索应用框架支持)

5、mybatis-spring-boot-starter(第三方mybatis集成starter)

34、SpringBoot自动配置原理:

1、@EnableAutoConfiguration这个注解会"猜"你将如何配置spring,前提是你已经添加了jar依赖项,如果spring-boot-starter-web已经添加Tomcat和SpringMVC,这个注释就会自动假设您在开发一个web应用程序并添加相应的spring配置,会自动去maven中读取每个starter中的spring.factories文件,该文件里配置了所有需要被创建spring容器中bean

2、在main方法中加上@SpringBootApplication和@EnableAutoConfiguration

35、SpringBoot starter工作原理:

1、SpringBoot在启动时扫描项目依赖的jar包,寻找包含spring.factories文件的jar

2、根据spring.factories配置加载AutoConfigure

3、根据@Conditional注解的条件,进行自动配置并将bean注入到Spring Context

36、SpringBoot的优点:

1、减少开发、测试时间和努力

2、使用JavaConfig有助于避免使用XML

3、避免大量的maven导入和各种版本冲突

4、提供意见发展方法

5、通过提供默认值快速开始开发

6、没有单独的web服务器需要,这就意味着不再需要启动Tomcat、Glassfish或其他任何东西

7、需要更少的配置,因为没有web.xml文件。

来源:https://blog.csdn.net/lisi806/

作者:睦知