javaweb面试(2)

  • maven私有仓库的好处?
    答:搭建Maven私有仓库的主要目的,是为了在团队多人开发时,只要内网的私有仓库有下载过依赖的jar包,就直接从私有仓库获取,不再通过外网的中央仓库,毕竟外网的下载速度实在是太慢了。
  • 如何在linux系统下更改mysql的数据库编码?例如一开始UTF-8,现在要求更改为GBK编码?
    答:在my.ini 文件中 可以配置。还可以配置用户名以及密码。linux 中启动mysql 命令(centeroS7):service mysql start/status/stop ,启动之后 输入 mysql -uroot -p,输入密码 即可sql 命令界面。
default-character-set=gb2312
  • 如何浏览器不缓存界面?
    在标签下添加如下内容
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=8">
<meta http-equiv="Expires" content="0">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-control" content="no-cache">
<meta http-equiv="Cache" content="no-cache">
  • mybaties的入参对象和出参对象是什么?
    答:parameterType ,resultType
resultType:

1、基本类型  :resultType=基本类型
2、List类型:   resultType=List中元素的类型
3、Map类型    单条记录:resultType =map
                          多条记录:resultType =Map中value的类型
  • 请写出mysql 以及oracle 链接的驱动类?
com.mysql.jdbc.Driver 
com.mysql.cj.jdbc.Driver     //默认端口是3306
oracle.jdbc.driver.OracleDriver //默认端口是1521
redis  默认端口是6379
xsheel 默认链接端口 22
nginx  默认端口是80 ,tomcat 8080
elasticsearch  java链接端口 9300 ,浏览器默认访问是9200
  • Compator/Comparable的比较
    答:Comparable主要用于对象内部的比较方式,例如实现按年龄排序,实现接口Comparable,重写public int compareTo(Object obj)方法:
    示例:import org.junit.Test;

Comparator 用作自定义的比较方式,当默认的比较方式不适用时或者没有提供默认的比较方式,使用Comparator就非常有用。 实现接口 public int cmparar(Object o1,Object o2):

package com.example.demo;

import org.junit.Test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class TestClass {

    public class Perosn implements Comparable,Comparator{
        private String name;
        private int age;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }
        public Perosn(){
            //空参构造
        }

        public Perosn(String name, int age) {
            this.name = name;
            this.age = age;
        }

        /**
         * @param o
         * @return /**
         *  该对象小于、等于或大于指定对象o,分别返回负整数、零或正整数。
         **/

        @Override
        public int compareTo(Object o) {
            return this.age - ((Perosn) o).getAge();
        }

        /**
         * @return o1小于、等于或大于o2,分别返回负整数、零或正整数。
         * @param o1
         * @param o2
         */
        @Override
        public int compare(Object o1, Object o2) {
           // return -(((Perosn)o1).getAge() - ((Perosn)o2).getAge());//从大到小
            return ((Perosn)o1).getAge() - ((Perosn)o2).getAge(); //从小到大
        }
    }


    @Test
    public void testPerson(){

         Perosn[] perosns = new Perosn[]{new Perosn("li",20),new Perosn("ning",21),new Perosn("yang",19)};
         Perosn max=null;
         for(int i= 0;i<perosns.length-1;i++){
             if(perosns[i].compareTo(perosns[i+1]) > 0){
                 max=perosns[i];
             }
         }
         System.out.println(max.name+".."+max.getAge());
    }
    @Test
    public void testListp(){
        List<Perosn> lis = new ArrayList<>();
        lis.add(new Perosn("li",20));
        lis.add(new Perosn("ning",21));
        lis.add(new Perosn("yang",19));

        //lis.sort(new Perosn());

        Collections.sort(lis,new Perosn()); //底层调用的是List的sort(Comparator<T>) 方法.如上
        for (Perosn p : lis) {
            System.out.println(p.getName()+"..."+p.getAge());
        }
    }

}
  • 2.什么自动拆箱 装箱操作?
import org.junit.Test;

public class TestDataType {

    @Test
    public void intAndInteger(){
        Integer num = new Integer(3);;
        // 等同于 new Integer(3);
        int b=num;//拆箱

        int a = 4;
        Integer count = a;  //自动装箱
        Integer coun1 = 129;  //自动装箱
        Integer c = Integer.valueOf(a);
        Integer d = Integer.valueOf(129);
        System.out.println(num instanceof Integer); //true
        System.out.println("-127 与 128 之间:"+(coun1 == d)); // false
        System.out.println("-127 与 128 之间:"+(count == a)); //true
    }
}

解析:因为自动装箱,自动调用valueOf方法.底层源码

 public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
        //如果数值在-128和127之间,就直接调用IntegerCache类,返回缓存中的数据,自然是同一个对象.
         否则新建一个Integer对象
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }
  • 3.maven的主要作用?
    答:maven主要是用来解决导入java类依赖的jar,编译java项目主要问题,以及解决jar包冲突,项目版本管理等。
  • 4.try catch finally 的题目。
    答:首先所有异常类的都有一个共同的父类–Throwable,它有两个子类 Error 和 Exception。
    出现异常执行的情况:
    1.如果没有异常发生,则在try内的代码执行结束后执行;
    2.如果异常有发生且被catch捕捉,则在catch内的代码执行结束后再执行。
    3.如果异常发生但没有捕获,则再异常被抛给上层之前执行。
    4.如果在try 或者是catch 语句内有retrurn语句,则return语句在finally语句执行结束后才执行,但finally并不能改变返回值。
public int testException(){
        int num = 0;
        try {
            return num;
        }catch (Exception e){
            return  num;
        }finally {
            num = 2;
        }
    }
    @Test
    public void testReturnTry(){
        int count = testException();
        System.out.println("count="+count); // 0
    }

5.如果 findlly语句中 也有return 语句呢?则try 或者是catch 内的return 会丢失,实际返回为findlly语句的返回值。

public int testException(){
        int num = 0;
        try {
            return num;
        }catch (Exception e){
            return  num;
        }finally {
            return  2;
        }
    }
    @Test
    public void testReturnTry(){
        int count = testException();
        System.out.println("count="+count);//2
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值