非常适合零基础学者
希望各位萌新和我一起畅享程序猿的世界,一起奔跑,一起进步加油,内容由浅入深,设计到全方位的程序世界,每日五题,暂且是Java后端,每日五道面试题,以及本人写出的精简答案,大家也可以进一步拓展衍生,看其他帖子。
面试题一:请说出数组和集合的区别?
回答:三种区别:1、数组的长度是固定的,集合的长度是动态变化的;2、数组可以存放基本类型和引用类型数据,集合只能存放引用类型数据;3、数组只能存放同一种类型的数据,集合可以存放多种类型的数据。
面试题二:线程中的run()和start()有什么区别?
回答:run()方法是线程中和其他的普通方法是一样的,程序自上而下的顺序运行的,但是start()方法不一样,它是让程序中方法的就绪状态加入cpu的调用,成为执行状态,状态的切换了,所以程序执行最终跑起来,都是用的start()方法。
面试题三:反射中的动态代理是什么,有哪些应用?
回答:动态代理是在不改变原生类的前题下,额外的添加一些其他的功能,这种既不影响原生类,又可以额外添加其他逻辑的代理模式就是动态代理,有java动态代理(缺陷被代理的类必须实现一个接口,否则无法代理),cglib动态代理(可以代理没有实现接口的类);其应用主要是在Spring框架中面向切面编程AOP,加日志,事务,权限等等。
面试题四:如何实现对象的克隆?
回答:两种实现方式:第一种:实现Cloneable接口,并重写Object的clone()方法;第二种:是通过Serializable序列化的方式,对对象进行序列化和放序列化从而进行深度克隆。
面试题五:异常中try-catch-finally,如果catch中有return返回数据的话,finally中的代码会执行吗?
回答:会执行,finally是表示一定会执行一次的意思,若前面有return的话,那就在return之前执行。