杭州亲宝宝Java开发实习生一面

面试时间二十分钟,时间好短觉得凉了嘤嘤嘤

先常规自我介绍,然后从介绍项目,从项目深入开始问MySQL最后问了一些Java基础,没问太深,最后反问面试官。

目录

mysql内容:

1项目Mysql表中,表的设计,字段的设计

2char和varchar的区别

3select查询语句(查询user表中姓X的人),索引是否失效,like以通配符开头('%abc...')mysql索引失效会变成全表扫描操作

java基础

4基本数据类型,整型,short能表示的范围

5short包装类的相等判断,equals 和 ==

6final关键字用法

7finally关键字和try-catch-finally代码块的执行顺序


mysql内容:

1项目Mysql表中,表的设计,字段的设计

2char和varchar的区别

  • varchar与char的区别

    • char的特点

      char表示定长字符串,长度是固定的;如果插入数据的长度小于char的固定长度时,则用空格填充;因为长度固定,所以存取速度要比varchar快很多,甚至能快50%,但正因为其长度固定,所以会占据多余的空间,是空间换时间的做法;对于char来说,最多能存放的字符个数为255,和编码无关

    • varchar的特点

      varchar表示可变长字符串,长度是可变的;插入的数据是多长,就按照多长来存储;varchar在存取方面与char相反,它存取慢,因为长度不固定,但正因如此,不占据多余的空间,是时间换空间的做法;对于varchar来说,最多能存放的字符个数为65532

    • 总之,结合性能角度(char更快)和节省磁盘空间角度(varchar更小),具体情况还需具体来设计数据库才是妥当的做法。

  • varchar(50)中50的涵义

    最多存放50个字符,varchar(50)和(200)存储hello所占空间一样,但后者在排序时会消耗更多内存,因为order by col采用fixed_length计算col长度(memory引擎也一样)。在早期 MySQL 版本中, 50 代表字节数,现在代表字符数。

  • int(20)中20的涵义 是指显示字符的长度。20表示最大显示宽度为20,但仍占4字节存储,存储范围不变;

    不影响内部存储,只是影响带 zerofill 定义的 int 时,前面补多少个 0,易于报表展示

  • mysql为什么这么设计 对大多数应用没有意义,只是规定一些工具用来显示字符的个数;int(1)和int(20)存储和计算均一样;

  • mysql中int(10)和char(10)以及varchar(10)的区别 int(10)的10表示显示的数据的长度,不是存储数据的大小;chart(10)和varchar(10)的10表示存储数据的大小,即表示存储多少个字符。

    int(10) 10位的数据长度 9999999999,占32个字节,int型4位 char(10) 10位固定字符串,不足补空格 最多10个字符 varchar(10) 10位可变字符串,不足补空格 最多10个字符

    char(10)表示存储定长的10个字符,不足10个就用空格补齐,占用更多的存储空间

    varchar(10)表示存储10个变长的字符,存储多少个就是多少个,空格也按一个字符存储,这一点是和char(10)的空格不同的,char(10)的空格表示占位不算一个字符

3select查询语句(查询user表中姓X的人),索引是否失效,like以通配符开头('%abc...')mysql索引失效会变成全表扫描操作

select * from user where name like 'X%';

会用到索引

如果是select * from user where name like '%X';

则不会用到索引,因为会变成全表扫描

java基础

4基本数据类型,整型,short能表示的范围

5short包装类的相等判断,equals 和 ==

        1、基本型和基本型封装型进行“==”运算符的比较,基本型封装型将会自动拆箱变为基本型后再进行比较, 因此Integer(0)会自动拆箱为int类型再进行比较,如1,4行,显然返回true。 另外两个Integer对象进行“==”比较时,如果有一方的Integer对象是new获得的,返回false,因为比较的是两个对象的地址,如5,6。 3、两个基本型的封装型进行equals()比较,首先equals()会比较类型,如果类型相同,则继续比较值,如果值也相同,返回true,如8,10。 4、基本型封装类型调用equals(),但是参数是基本类型,这时候,先会进行自动装箱,基本型转换为其封装类型,若类型不同返回false, 若装箱后类型相同,则比较值,如果值相同,则返回true,否则返回false。如7,9。

int a=257;
Integer b=257;
Integer c=257;
Integer d=new Integer(a);
Integer d1=new Integer(a);
​
Integer b2=57;
Integer c2=57;
​
System.out.println(a==b);//1true
System.out.println(b==c);//2 false
System.out.println(b2==c2);//3true
System.out.println(a==d);//4true
System.out.println(b==d);//5 false
System.out.println(d==d1);//6 false
​
System.out.println();
​
//System.out.println(a.equals(b));  编译出错,基本型不能调用equals()
System.out.println(b.equals(257.0));  //7 false
System.out.println(b.equals(c));       //8 true
System.out.println(b.equals(a));      //9 true
System.out.println(b.equals(d));    //10 true

6final关键字用法

用于修饰类、属性和方法;

  • 被final修饰的类不可以被继承

  • 被final修饰的方法不可以被重写

  • 被final修饰的变量不可以被改变,被final修饰不可变的是变量的引用,而不是引用指向的内容,引用指向的内容是可以改变的

7finally关键字和try-catch-finally代码块的执行顺序

try{
 user.setName(“cs”);
 return user.getName();
}finally{
 user.setName(“css”);
}
public class HelloWorld {
    public static class a{
        private int aa=10;
​
        public void setAa(int aa) {
            this.aa = aa;
        }
        public int getAa() {
            return aa;
        }
    }
    public static a a = new a();
    public static int test(){
        try{
            a.setAa(20);
            return a.getAa();
        }finally {
            a.setAa(30);
        }
    }
    public static void main(String[] args) {
        System.out.println(test());
        System.out.println(a.getAa());
    }
}
/*执行结果:
20
30
*/

有return的情况下try catch finally的执行顺序结论:

1、不管有木有出现异常,finally块中代码都会执行;

2、当try和catch中有return时,finally仍然会执行;

3、finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,管finally中的代码怎么样,返回的值都不会改变,任然是之前保存的值),所以函数返回值是在finally执行前确定的;

4、finally中最好不要包含return,否则程序会提前退出,返回值不是try或catch中保存的返回值。

本题博客总结:java面试题:有return的情况下try catch finally的执行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值