面试总结

Posted sunjh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试总结相关的知识,希望对你有一定的参考价值。

这几天面试,忘记了很多东西,也发现自己很多不足,所以总结一下。

1.抽象

抽象类可以有非抽象方法;

抽象方法只有方法的声明,没有方法的实现(即没有方法体);

有抽象方法的类必定是抽象类;

抽象方法不能为private,final(final规定子类不能再覆盖它。abstract是专等着要别人来覆盖)或者static。

2.接口

 java单继承多实现;

接口只能有抽象方法(不能实现)和final和staic修饰的变量。

3.二叉树的前序、中序和后序遍历

前序:根节点-左节点-右节点

中序:左节点-根节点-右节点

后序:左节点-右节点-根节点

4.ioc

控制反转,又称依赖注入,说的是一个类A要调用另一个类B,本来应该在类A里面创建B的实例的,控制权在A手里。现在用了Spring了,有了IOC,控制权就不在A手里了,而是交到Spring的IOC容器了,A要用到B,那Spring就把B分给A了。传统方式使用new来控制程序之间的关系,这种实现的方式会造成组件之间耦合(一个好的设计,不但要实现代码重用,还要将组件间关系解耦),使用ioc时,控制程序间关系的实现交给了外部的容器来完成,降低了耦合。

IoC的实现形式

属性注入(setter注入):

技术图片
package com.spring.demo.entity;  
  
public class Programmer   
  
    private String name;  
    private String sex;  
  
    // 在这里定义要依赖的computer属性,加上set方法  
    private Computer computer;  
  
    public String getName()   
        return name;  
      
  
    public void setName(String name)   
        this.name = name;  
      
  
    public String getSex()   
        return sex;  
      
  
    public void setSex(String sex)   
        this.sex = sex;  
      
  
    public Computer getComputer()   
        return computer;  
      
  
    /** 
     * 加上Setter方法 
     * */  
    public void setComputer(Computer computer)   
        this.computer = computer;  
      
 
Programmer类
技术图片
<?xml version="1.0" encoding="UTF-8"?>  
  
<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans  
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">  
      
  <bean id="programmer" class="com.spring.demo.entity.Programmer">  
    <property name="name" value="小李"></property>  
    <property name="sex" value="男"></property>  
    <property name="computer" ref="computer"></property>  
  </bean>  
    
  <bean id="computer" class="com.spring.demo2.entity.Computer">  
    <property name="brand" value="hp"></property>  
    <property name="color" value="黑"></property>  
    <property name="size" value="14"></property>  
  </bean>  
    
</beans>
xml配置文件

构造器注入:

技术图片
package com.spring.demo1.entity;  
  
import com.spring.demo.entity.Computer;  
  
public class Programmer   
      
    private Computer computer;  
      
    public Programmer(Computer computer)  
        this.computer = computer;  
      
 
Programmer类
技术图片
<?xml version="1.0" encoding="UTF-8"?>  
  
<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans  
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">  
      
  <bean id="programmer" class="com.spring.demo1.entity.Programmer">  
    <constructor-arg ref="computer"></constructor-arg>  
  </bean>  
    
  <!-- 构造器里面没有name字段,只有value,是根据构造器的方法参数顺序来定义的 -->  
  <bean id="computer" class="com.spring.demo3.entity.Computer">  
    <constructor-arg value="中兴"></constructor-arg>  
    <constructor-arg value="黑色"></constructor-arg>  
    <constructor-arg value="15寸"></constructor-arg>  
  </bean>  
    
</beans>
xml配置文件

自动装配:

技术图片
package com.spring.demo02.entity;  
  
import org.springframework.beans.factory.annotation.Autowired;  
import org.springframework.stereotype.Component;  
  
@Component  
public class Programmer   
      
    @Autowired  
    Computer computer;  
  
 
Programmer类
技术图片
package com.spring.demo02.entity;  
  
import org.springframework.stereotype.Component;  
  
@Component  
public class Computer   
    private String brand;  
    private String color;  
    private String size;
 
    public String getBrand()   
        return brand;  
      
  
    public void setBrand(String brand)   
        this.brand = brand;  
      
  
    public String getColor()   
        return color;  
      
  
    public void setColor(String color)   
        this.color = color;  
      
  
    public String getSize()   
        return size;  
      
  
    public void setSize(String size)   
        this.size = size;  
      
Computer类
技术图片
<?xml version="1.0" encoding="UTF-8"?>  
  
<beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
    xmlns:context="http://www.springframework.org/schema/context"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans  
    http://www.springframework.org/schema/context   
    http://www.springframework.org/schema/context/spring-context-3.0.xsd   
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">  
      
    <context:component-scan base-pakage="com.spring.demo02">  
    
</beans>
xml配置文件

Spring容器会把加了@Component的类实例化;在实际运行时,会给加了@Autowired的属性注入对应的实例。

 5.子类继承父类执行顺序

 父类静态代码块

 子类静态代码块

父类代码块

父类构造方法

子类代码块

子类构造方法

解释:从.class 到JVM加载的时候,就执行static代码块和static变量,所以先执行静态代码块;创建对象的时候,调用了它的构造方法,所有子类的构造方法第一行的时候都隐含 super(),所以会先调用父类的构造方法,而每次在执行构造方法之前都会执行代码块;子类和main方法在同一个类中,如果在new子类对象之前main方法中有语句,那么顺序就是:静态、main()的语句、父类代码块、父类构造方法.....

注意:静态变量只执行一次

6.set和List的区别

Set集合中的对象不按特定方式排序,并且没有重复对象,Set的add()方法判断对象是否已经存在

List集合对象按索引位置排序,可以有重复对象,Collections.sort(list)方法用于对List中的对象进行排序

以上是关于面试总结的主要内容,如果未能解决你的问题,请参考以下文章

Android面试题基础集锦总结《二》

Android面试题基础集锦总结《二》

网易面试总结——面试案例9~面试案例12

个人总结工作两年的 JAVA 程序员面试总结

Java 面试总结 —— 面试常问的关键字总结

263网络通信面试总结