JAVA面试基础知识收集

有时候面试官会问得非常细,非常的基础,以至于是一些你都没有注意过的小常识,这里收集了一点JAVA的小知识,便于查阅。

面试的知识主要分为以下几类:这里只是少量内容,后续会不断补充。

1.Java基础知识,包括jvm,spring,等知识。

2.常用框架相关,包括SSM,springboot等。

3.Linux常识。

4.数据库常识。

5.设计模式以及架构设计知识。

------------------正文开始------------------------

1.Java基础知识

 1>.web项目中的web.xml中有些什么配置?

  指定欢迎页面,指定错误页面(可以通过错误码或异常类型来指定错误处理页面),命名并定制URL,设置监听器,设置过滤器。

  详细参考:

 2>.说一下常见的JSP内置对象有哪些?

  九大内置对象:

  1. 内置对象名          类型  
  2. request        HttpServletRequest  
  3. response       HttpServletResponse  
  4. config         ServletConfig  
  5. application    ServletContext  
  6. session        HttpSession  
  7. exception      Throwable  
  8. page           Object(this)  
  9. out            JspWriter  
  10. pageContext    PageContext 

  四大域对象:

  1. ServletContext     context域  
  2. HttpServletRequet  request域  
  3. HttpSession        session域     --前三种在学习Servlet时就能接触到  
  4. PageContext        page域     --jsp学习的 

  详细参考:

  3>.http常见状态码:

  200 成功返回,301 重定向,304 not modified,400 请求错误,403 服务端拒绝请求,404 请求失败,资源未在服务器上发现,5或6开头的都是服务器错误。

  详细参考:https://baike.baidu.com/item/HTTP%E7%8A%B6%E6%80%81%E7%A0%81/5053660?fr=aladdin

  4>.ftp端口,MySQL端口,ssh端口分别是多少?

  ftp:20和21端口,20是用来连接的,21是用来传输数据的。MySQL端口是3306,ssh端口是22

  5>.写一个代码让抛出jvm堆栈异常:

  

public class TestDemo {

    private int index = 1;

    public void method() {
        index++;
        method();
    }

    @Test
    public void testStackOverflowError() {
        try {
            method();
        } catch (StackOverflowError e) {
            System.out.println("程序所需要的栈大小 > 允许最大的栈大小,执行深度: " + index);
            e.printStackTrace();
        }
    }
}

  6>.写一个完整的单例模式:

   

//静态内部类方式
public class Singleton{
    private static class SingletonHolder{
        public static Singleton instance = new Singleton();
    }
    private Singleton(){

    }

    public static Singleton newSingleton(){
        return SingletonHolder.instance;
    }

}

 详细参考:

 

2.常用框架相关


1>.当前springboot版本是多少?

  目前使用最新的springboot,版本为:2.0.0

 2>.spring的bean是如何加载的?spring的bean的作用域是什么?

  

  Spring中bean的加载过程:

 

  1.获取配置文件资源

  2.对获取的xml资源进行一定的处理检验

  3.处理包装资源

  4.解析处理包装过后的资源

  5.加载提取bean并注册(添加到beanDefinitionMap中)

     

   Spring支持五种作用域:

  • singleton:单例模式,在整个Spring IoC容器中,使用singleton定义的Bean将只有一个实例
  • prototype:原型模式,每次通过容器的getBean方法获取prototype定义的Bean时,都将产生一个新的Bean实例
  • request:对于每次HTTP请求,使用request定义的Bean都将产生一个新实例,即每次HTTP请求将会产生不同的Bean实例。只有在Web应用中使用Spring时,该作用域才有效
  • session:对于每次HTTP Session,使用session定义的Bean豆浆产生一个新实例。同样只有在Web应用中使用Spring时,该作用域才有效
  • globalsession:每个全局的HTTP Session,使用session定义的Bean都将产生一个新实例。典型情况下,仅在使用portlet context的时候有效。同样只有在Web应用中使用Spring时,该作用域才有效

        默认情况下是"单例模式".

  详细参考:

       

 3>.当数据库字段和实体字段不一致时,mybatis中如何配置?

  使用映射文件,配置映射字段,在*Mapper.xml中写法如下:

  

<!-- 配置映射字段 -->  
    <resultMap type="Department" id="tab_department">  
        <id property="ids" column="ids"/>  
        <result property="deName" column="de_name"/>  
        <result property="pIds" column="p_ids"/>  
        <result property="deChargePerson" column="de_charge_person"/>  
        <result property="createTime" column="create_time"/>  
    </resultMap>

 4>.springboot项目访问端口在哪里配置?

  根目录有一个文件:application.properties中的server.port:80修改下即可。

 

3.Linux常识

1>.常见的Linux命令?

  top:查看性能,rm -rf 删除,cat:查看文件,tar 打包等

  详细参考:http://www.runoob.com/linux/linux-command-manual.html

 

4.数据库常识


1>.mysql存储引擎有哪些?

  常见的两种:InnoDB,MyISAM

  InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,上图也看到了,InnoDB是默认的MySQL引擎。

  MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM拥有较高的插入、查询速度,但不支持事物。

 

2>.在什么情况下需要建立索引?索引的优缺点?

  对于经常查询的字段可以加上索引。

  实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。

  索引的优点:索引可以大大提高MySQL的检索速度。

  索引的缺点:

    1.降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。

    2.建立索引会占用磁盘空间的索引文件。



 3>.mysql执行大量insert操作导致死锁,如何解除?

  

  1.查询是否锁表

    show OPEN TABLES where In_use > 0;

  2.查询进程(如果您有SUPER权限,您可以看到所有线程。否则,您只能看到您自己的线程)

    show processlist

  3.杀死进程id(就是上面命令的id列)

    kill id

 4>.员工信息表employer,字段如下:id,name,age,subject,现在想要按照年龄对员工进行统计,请写出SQL?

  select name as 姓名,age as 年龄,COUNT(age) as 人数 from employerGROUP BY age;

  结果:

      

java核心技术面试精讲 书_java核心技术面试精讲 书

 

知识点比较碎,记录贵在积累。