JAVA面试

什么是面向对象

  • 面向过程更注重每一个步骤及顺序
  • 面向对象更注重有哪儿些参与者(对象)、以及各自需要做什么
  • 面向过程比较直接高效
  • 面向对象更易于扩展和维护

继承、封装 、 多态

封装: 封装的意义在于明确标识出允许外部使用的所有成员函数和数据项

  • 内部细节对外部调用透明、外部调用无须修改或者关心内部实现
  • 典型封装场景:
    • JavaBean的属性私有,提供getset对外访问,因为属性的赋值或者获取逻辑只能由JavaBean本身决定,而不能由外部胡乱修改
    • ORM框架:
      • 操作数据库 , 我们不需要关心链接是如何建立的、sql是如何执行的 , 只需要引入mybatis调方法即可

继承: 继承基类的方法,并做出自己的改变或扩展

  • 子类共性的方法或者属性直接使用父类的 , 而不需要自己再定义,只需扩展自己个性化的

多态: 基于对象所属类的不同 , 外部对同一个方法的调用,实际执行的逻辑不同

  • 多态三个条件:
    • 继承
    • 方法重写
    • 父类引用指向子类对象
  • 多态无法调用子类特有的功能
    • 因为这个方法必须在父类中有 , 也就是必须是重写方法

职业规划

假如我是应聘者,首先,我会说自己会把自己学到的理论知识、专业技能等,应用在实际的项目任务当中。

等我熟悉了产品的业务逻辑后,我会开始大量应用我会开始大量应用主流技术来提高工作效率,确保高质量地完成工作任务。

同时,我会在项目中去学习软件开发的流程、进度报告的编制等,后期争取有机会去实践web项目管理。

HashMap和ArrayList之间的区别

  • 相同点:
    • 获取元素个数的方法都是size()
    • 都可以存储null值
    • 都是线程不安全的
  • 不同点:
    • ArrayList实现接口是List
    • HashMap实现接口是Map
    • ArrayList以数组方式存储 , 元素有序 , 可重复
    • HashMap以键值对方式存储,键不可重复 , 值可重复
    • ArrayList的添加元素方法是add
    • HashMap的添加元素的方法是put
    • ArrayList默认大小是10
    • HashMap的默认大小是16

Array和ArrayList的区别

  • ArrayList只能包含对象类型
  • Array可以对象类型也可以包含基本类型
  • ArrayList大小是动态的
  • Array大小是固定的
  • ArrayList增加了更多的方法和特性

String 和 StringBUffer 和 StringBuilder之间的区别

  • String是不可变的
  • StringBuffer是可变的 , 且线程安全
  • StringBuilder是可变的,线程不安全,效率最高

ArrayList遍历:

List<String> list = new ArrayList<>();
list.add("哈哈哈");
list.add("嘻嘻嘻");
list.add("啦啦啦");
list.add("游戏");
list.add("略略略");

//遍历方法一:通过迭代器Iterator进行遍历 
Iterator iter = list.iterator();  
while(iter.hasNext()){  
    String name = iter.next();  
    System.out.println(name); 
}
//遍历方法二:使用for循环遍历
for(int i=0;i<list.size();i++){  
    System.out.println(list.get(i));  
}

// 遍历方法三:
for (String s : list) {
    System.out.println(s);
}

// 遍历方法四:
Set<Map.Entry<String, String>> entries = map.entrySet();
for (Map.Entry<String, String> entry : entries) {
    System.out.println(entry.getKey() + "," + entry.getValue());
}

HashMap遍历:

        Map<String, String> map = new HashMap<>();
        map.put("ss","trt");
        map.put("aa","dsf");
        map.put("vv","fsd");
        map.put("ff","fgs");

        // 第一种遍历
        for (String s : map.keySet()) {
            System.out.println(s + "," + map.get(s));
        }
        
        // 第二种遍历
        Iterator<String> iterator = map.keySet().iterator();
        while (iterator.hasNext()) {
            String next = iterator.next();
            System.out.println(next + "," + map.get(next));
        }
		
        // 第三种遍历
        map.forEach((key , value) -> {
            System.out.println(key + ":" + value);
        });

try和throwException的区别,分别什么时候用

  • 原则:如果该功能内部可以将问题处理,用 try,如果处理不了,交由调用者处理,这是用 throws

    • 区别:

      • throw exception直接终止方法,或者退出循环。

      • try catch还要继续处理方法余下的逻辑,或者不结束循环。

      • try catch 不中断,throw exception中断

finally什么时候用

不管程序是否有异常,finally的代码都会执行

数据库的左连接和右连接还有内连接

  • 内连接

    • 是一种一一映射的关系,只有两张表都有的数据才能查询出来
    • 在这里插入图片描述
  • 左连接:

    • 左边表所有数据都显示出来
    • 右边表显示共同数据,其他为空
    • 在这里插入图片描述
  • 右连接

    • 右边表所有数据
    • 左边表显示共有数据,没有对应部分补空
    • 在这里插入图片描述
  • OUTER JOIN(外连接、全连接)

    • 查询出左表和右表所有数据,但是去除两表的重复数据
    • 在这里插入图片描述
  • LEFT JOIN EXCLUDING INNER JOIN(左连接不包含内连接)

    • 这个查询是只查询左边表有的数据,共同有的也不查出来
    • 在这里插入图片描述
  • RIGHT JOIN EXCLUDING INNER JOIN(右连接不包含内连接)

    • 这个查询是只查询右边表有的数据,共同有的也不查出来
    • 在这里插入图片描述
  • OUTER JOIN EXCLUDING INNER JOIN(外连接不包含内连接)

    • 意思就是查询左右表各自拥有的那部分数据
    • 在这里插入图片描述

JDK体系结构

Javalangue(常用java工具集):包含java 、 javac 、 jar 、 javap等
JRE: java运行时环境 : lang包 , util包 、 collections 、inputOutPut等等
加粗样式: java virtual Machine : java虚拟机

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值