首页 课程 师资 教程 报名

中级Java工程师面试知识点

  • 2019-07-17 11:35:09
  • 2307次 动力节点

  中级Java工程师面试知识点,当你经历过一次工作变动,你才知道你到底是一个怎样的人,你在行业处于一个什么样地位,你有什么是让企业给你行业标准薪资又或者说高于标准薪资的能力?当你经历过这些,你才知道自己到底有几斤几两。本篇微博算是一次总结,希望在今后能够在工作中,年限在增长,经验与能力也要与之匹配。

中级Java工程师面试知识点.jpg

  基本语法:

  Static,Transient,foreach循环的原理,Switch,java反射机制,单线程安全类demo,常规算法等关键字作用,至少掌握其用法和场景

  Exception和Error区别

  Exception是程序错误,可控或不可控,可在程序中捕获异常

  Error是系统异常,不可控,可能的话可在系统中捕获异常

  java.util.Date和java.sql.Date的区别及应用

  java.util.Date就是在除了SQL语句的情况下面使用

  java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分,它都有getTime方法返回毫秒数,自然就可以直接构建

  java.util.Date是java.sql.Date的父类

  java.util.Dated=newjava.util.Date(sqlDate.getTime());

  java.util.Dated=newjava.util.Date(date.getTime());

  集合

  集合的结构

  其中ArrayList和HashMap用到特别多,也是被问到特别多的地方

  ArrayList原理

  以数组实现。节约空间,但数组有容量限制。

  超出限制时会增加50%容量,用System.arraycopy()复制到新的数组,因此最好能给出数组大小的预估值。默认第一次插入元素时创建大小为10的数组。

  按数组下标访问元素—get(i)/set(i,e)的性能很高,这是数组的基本优势。

  直接在数组末尾加入元素—add(e)的性能也高,但如果按下标插入、删除元素—add(i,e),remove(i),remove(e),则要用System.arraycopy()来移动部分受影响的元素,性能就变差了,这是基本劣势。

  特点:

  是一个相对来说比较简单的数据结构,最重要的一点就是它的自动扩容,可以认为就是我们常说的“动态数组”。

  其中操作可以理解为直接将数组的内容置位,remove操作可以理解为删除index为0的节点,并将后面元素移到0处

  LinkedList原理:

  Hashtable原理:

  HashMap原理:

  HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。

  当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。

  当获取对象时,通过键对象的equals()方法找到正确的键值对,然后返回值对象。

中级Java工程师面试知识点.jpg

  碰撞:

  HashMap使用LinkedList来解决碰撞问题,当发生碰撞了,对象将会储存在LinkedList的下一个节点中。HashMap在每个LinkedList节点中储存键值对对象。

  当两个不同的键对象的hashcode相同时会发生什么?它们会储存在同一个bucket位置的LinkedList中。键对象的equals()方法用来找到键值对

  负载因子:

  默认负载因子大小0.75

  当map填满75%的bucket时候,和其他集合类一样(ArrayList)将会创建原来HashMapda大小两倍的bucket数组

  重新调整map大小,并将原来的对象放入新的bucket数组中,此过程称之为rehashing

  集合为什么不直接实例化接口

  Setset=newHashSet()而不是Setset=newSet()

  Mapmap=newHashMap()而不是HashMapmap=newHashMap()

  Listlist=newArrayList()而不是ArrayListlist=newArrayList();

  1.Set,List,map是接口,不能实例化,只能实例化接口实现类,HashSet,ArrayList,HashMap

  2.实现类中的属性和方法set,map,list不能调用,只能调用接口本身属性和方法

  3.接口有多个实现类,便于代码的重构,以后只需改实现类,其他可不变

  Eg:我是老板A,有两个员工B,C。我现在有一个任务,目的是完成任务,须根据我的想法授权于B或者C,不能让B自己按自己想法完成(Bb=newB()),若后面老板想换人(Aa=newC())

  数据库

  数据库十有八九也都会问到。一些基本的像rightjoin、fulljoin、leftjoin、几种索引及其区别就不谈了,比较重要的就是数据库性能的优化,如果对于数据库的性能优化一窍不通,那么有时间,还是建议你在面试前花一两天专门把SQL基础和SQL优化的内容准备一下。

  不过数据库倒是不用担心,一家公司往往有很多部门,如果你对数据库不熟悉而基本技术又非常好,九成都是会要你的,估计会先把你放到对数据库使用不是要求非常高的部门锻炼一下。

选你想看

你适合学Java吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交