还剩3页未读,继续阅读
文本内容:
java面试基础知识分享java面试基础知识
1、静态变量和实例变量的区别?在语法定义上的区别静态变量前要加static关键字,而实例变量前则不加在程序运行时的区别实例变量是属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配内存空间,才可以使用这个实例变量静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会分配内存空间,而且只分配一次静态变量就可以被使用了总之,实例变量必须创建后才可以通过这个对象来使用,静态变量则直接可以使用类名来调用
2、什么是反射机制?java反射是在运行状态中,对任意一个类,都能够知道这个类的所有属性和方法,对于任何一个对象,都能够调用它的任意一个属性和方法,这种动态获取信息以及动态调用对象的方法的功能称为java的反射机制
3、什么是装箱什么是拆箱?装箱自动将基本数据类型转换为包装器类型拆箱自动将包装器类型转换为基本数据类型
4、Java中覆盖和重载是什么意思?覆盖Override是指子类对父类方法的一种重写,只能比父类抛出更少的异常,访问权限不能比父类的小,被覆盖的方法不能是private的,否则只是在子类中重新定义了一个新方法重载Overload表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同Java工程师需要具备什么技能
1、夯实的java基础当前的java新技术层出不穷,各企业的有不同的侧重点,根据企业用人的需求,只有具备坚实的java基础功底的程序员才能快速掌握新的技术需要在核心算法、面向对象应用、数据结合及集合框架、反射、输入输出、多线程、异常处理等方面进行深入学习
2、熟悉Linux操作系统Linux是当今用作广泛的服务器操作系统合格的java高级工程师必须具备熟练地Linux操作技巧,这也正是在企业面试中获得加分的重要指标之一
3、深入学习数据库技术互联网公司对Java应用离不开数据库技术任何一个大中型应用,数据库设计的好坏、数据库访问的效率直接决定了该项目的成败当前数据库最主流的技术有Oracle和MySQL两种,除了能熟练应用数据库体系结构和SQL语句之外,还要掌握数据库设计、SQL语句优化方面
4、系统的Web前端技术随着互联网技术由Web
2.0向Web
3.0迈进,Web前端技术,包括HTML、CSS特别是javascript语言越来越被企业重视很多企业为此设置“Web前端工程师”岗位,所以作为一名合格的java高级工程师要不断学习包括javascript在内的Java知识还有其相关的Ajax、JQueiy框架、Ext-JS框架
5、企业及框架Java是组件和框架的世界,所有的java程序员都应当了解java框架
6、专门的企业级开发及部署环境企业在开发、测试、部署实际项目时需要有特定的软件环境,但是很多技术人员往往不太重视这个,所以在工作中会出现很多问题和失误甚至被淘汰因此,作为java工程师对Linux高级命令集脚本编程、远程登录、Art、单元测试技术、Maven构建技术、SVN应用技术等要有所了解
7、规范的企业开发流程及文档软件开发是团队合作,因此企业开发流程和文档规范尤为重要这也是区分“草根程序员”和“正规程序员”的重要指标之一开发项目项目无论大小都应该按照企业开发的流程进行(需求分析、系统设计、编码实现、单元测试、系统测试、部署上线)java基础知识面试题及答案
1、static关键字什么意思?java中是否可以覆盖一个private或者是static的方法?“static”表明一个成员变量或者是成员方法可以在没有所属类的实例变量的情况下访问java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的static方法与类的任何实例都不相关java中不可以覆盖private方法因为private修饰的变量和方法只能在当前类中使用,如果是其他类继承当前类,继承类中是不能访问到private变量和方法的
2、能否在static环境中访问非static变量?不能static变量是属于类的当类被虚拟机载入时,会对static变量进行初始化非static变量是属于实例的,这个时候实例还没有被创建,编译器会报错
3、java基本类型,什么是自动拆装箱?基本类型byteshortintfloatlongdoublebooleanchar自动装箱是java编译器在基本类型和对应的对象包装类型之间做一个转化比如把int转化为Integer等等反之为自动拆箱
4、java的方法覆盖overriding和方法重载overloading是什么意思?java中方法重载发生在同一个类中有两个或者多个方法名字相同但是参数不同的情况方法覆盖是子类重新定义父类的方法方法覆盖必须有相同的方法名,参数列表和返回类型
5、java中,什么是构造方法什么是构造方法重载什么是复制构造方法?当新对象被创建时,构造方法会被调用每一个类都有一个构造方法,在没有给类提供构造函数时,编译器会自动创建一个默认的构造方法java中构造方法重载和方法重载很相似可以为一个类创建多个构造方法,每一个构造方法必须有它自己唯一的参数列表
6、java支持多继承吗?不支持只能支持单继承,即一个类只有一个父类可以用implements实现多个接口扩展
7、接口与抽象类的区别1接口中所有方法隐含都是抽象的而抽象类则可以同时包含抽象和非抽象的方法2接口中声明的变量默认都是final而抽象类可以包含非final的变量3接口中成员函数默认都会publico抽象类的成员函数可以是privateprotected或者public4类可以不实现抽象类和接口声明中的所有方法,这种情况下,类也必须声明为抽象的
8、jdk与jre区别是什么?java运行时环境jre是将要执行的java程序的java虚拟机,同时也包含了执行applet需要的浏览器插件java开发工具包jdk是完整的java软件开发包,包含了jre编译器和其他工具比如javadocjava调试器,可以让开发者开发,编译,执行java应用程序
9、什么是只传递和引用传递值传递是对基本类型变量而言,传递是该变量的一个副本,改变副本不会影响原变量引用传递一般是对于对象型变量而言,传递的是该对象地址的一个副本,改变副本会影响原变量
10、进程和线程的区别?进程是执行着的应用程序,线程是进程内部的一个执行序列一个进程可以有多个线程区别1地址空间和其他资源进程之间相互独立同一个进程的各个线程间共享某进程内的线程在其他进程不可见2通信进程之间通信ipc线程间可以直接读写进程数据段如全局变量来进行通信一需要进程同步和互斥手段的辅助,以保证数据的一致性3调度和切换线程之间上下文切换比进程上下文切换快的多4在多线程os中,进程不是一个可执行的实体
11、同步方法和同步代码块的区别同步方法默认是用this或当前类对象作为锁同步代码块可以选择以什么来加锁,比同步方法更细粒度我们可以选择只同步会发生同步问题的部分代码而不是整个方法
12、什么是死锁?死锁是值多个线程因资源竞争而造成的一种僵局,若无外力作用,这些线程都无法向前推进产生死锁的4个必要条件1互斥条件2不剥夺条件3请求和保持条件4循环等待
13、如何确保N个线程可以访问N个资源同时又不导致死锁?一种非常简单的避免死锁的方式指定获取锁的顺序,并强制线程按照指定的顺序获取锁因此如果所有的线程都是以同样的顺序加锁和释放锁,就不会出现死锁
14、java集合类框架的基本接口有哪些?CollectionSetListMap15HashMap工作原理hashMap是以键值对的形式存储hashmap需要一个hash函数,它使用hashCode和equals方法来向集合/从集合添加和检索元素当调用put时、HashMap会计算key的hash值,然后把键值对存储在集合中合适的索引上如果key已经存在,value会被更新成新值hashMap的一些重要的特性是它的容量,负载因子和扩容极限16hashcode和equals重要性体现在什么地方?hashmap通过hashcode和equals确定键值对索引17hashmap和hashtable区别?hashmap允许键和值是nullhashtable不允许键或值为nullhashtable同步,而hashmap不是。