小滴课堂-学习笔记:应聘大厂工程师/技术经理的你编程基础是否牢固《下》(大厂校招+社招必备)

56 篇文章 0 订阅
20 篇文章 0 订阅

logo 愿景:"让编程不再难学,让技术与生活更加有趣"


更多架构课程请访问 xdclass.net

目录

第1集 编程语言面试题之新版javase字符串(重点)

第2集 编程语言面试题之新版javase字符串相关构建类

第3集 编程语言面试题之新版javase面向对象篇

第4集 编程语言面试题之新版javase接口篇

干货文档


第1集 编程语言面试题之新版javase字符串(重点)

简介:常用字符串的考查点

  • 难度【***】

  • 问题1: String str = new String("xdclass.net"); 创建了几个对象?

    
    
    
    答案:
    ​
    创建一个对象:常量池存在,则直接new一个对象;
    ​
    创建两个对象:常量池不存在,则在常量池创建一个对象,也在堆里面创建一个对象

     

  • 问题2: 下面是比较什么?输出结果是什么?为什么是这样的结果 String str1= new String("xdclass.net"); String str2= "xdclass.net"; String str3= "xdclass.net"; System.out.println(str1 == str2) //false System.out.println(str2 == str3) //true



答案:
比较引用的内存地址是否一样
第一个是false: new 创建新的对象会开辟新的空间,所以地址不一样
第二个是true:都是从常量池里面获取,"xdclass.net" 存在于常量池中
  • 问题3: 写出下面代码的各个结果?如果需要两个都为true,应该怎么修改`



String s1 = "xdclass";
​
String s2 = s1 + ".net";  //变量 + 常量 = 来自堆
​
String s3 = "xdclass" + ".net";  //常量 + 常量 = 来自常亮池
​
System.out.println(s2 == "xdclass.net"); 
​
System.out.println(s3 == "xdclass.net");




答案
第一条语句打印的结果为false, s2 = s1 + ".net",   //变量+常量=堆
构建了一个新的string对象,并将对象引用赋予s2变量,常量池中的地址不一样,但是值一样。
​
​
第二条语句打印的结果为true,javac编译可以对【字符串常量】直接相加的表达式进行优化,不用等到运行期再去进行加法运算处理,而是直接将其编译成一个这些常量相连的结果.
​
如果需要第一个输出为true,只需要把变量改为常量即可 fianl String s1 = "xdclass";
不管是new String("XXX")和直接常量赋值, 都会在字符串常量池创建.只是new String("XXX")方式会在堆中创建一个对象去指向常量池的对象, 普通的常量赋值是直接赋值给变量








第2集 编程语言面试题之新版javase字符串相关构建类

简介:常用字符串相关构建类的使用好区别

  • 考点:是否有举一反三的思维,常用类的掌握情况

  • 难度【***】

  • 问:String、StringBuffer与StringBuilder的区别?分别在哪些场景下使用

  • 答案:

    
    
    
    三者都是final, 不允许被继承
    在本质都是char[]字符数组实现
    String、StringBuffer与StringBuilder中,String是不可变对象,另外两个是可变的
    
    
    
    
    StringBuilder 效率更快,因为它不需要加锁,不具备多线程安全
    ​
    StringBuffer里面操作方法用synchronized ,效率相对更低,是线程安全的;
    ​
    使用场景:
        操作少量的数据用String,但是常改变内容且操作数据多情况下最好不要用 String ,因为每次生成中间对象性能会降低
    ​
        单线程下操作大量的字符串用StringBuilder,虽然线程不安全但是不影响
    ​
        多线程下操作大量的字符串,且需要保证线程安全 则用StringBuffer
    
    
    
    
    
    
    
    
    

     

 

第3集 编程语言面试题之新版javase面向对象篇

简介:面向对象思想OOP

  • 考点:面向对象思想OOP的理解

  • 难度【***】

  • 面向对象的四大特性是?分别解释下

    
    
    
    答案:
        抽象
            关键词abstract声明的类叫作抽象类,abstract声明的⽅法叫抽象⽅法
            ⼀个类⾥包含了⼀个或多个抽象⽅法,类就必须指定成抽象类
            抽象⽅法属于⼀种特殊⽅法,只含有⼀个声明,没有⽅法体
            抽象支付  
                pay(金额,订单号),默认实现是本地支付,微信支付,支付宝支付,银行卡支付
    
    
        封装
            封装是把过程和数据包围起来,对数据的访问只能通过已定义的接⼝即⽅法
            在java中通过关键字private,protected和public实现封装。
            封装把对象的所有组成部分组合在⼀起,封装定义程序如何引⽤对象的数据,
            封装实际上使⽤⽅法将类的数据隐藏起来,控制⽤户对类的修改和访问数据的程度。 适当的
            封装可以让代码更容易理解和维护,也加强了代码的安全性
            类封装
            ⽅法封装
    
        继承
            ⼦类继承⽗类的特征和⾏为,使得⼦类对象具有⽗类的⽅法和属性,⽗类也叫基类,具有公共的⽅法和属性
            动物<-猫
            动物<-狗
            abstract class AbsPay{
    ​
            }
    
            WeixinPay extends AbsPay{
                
            }
    
            AliPay extends AbsPay{
                
            }
    
        多态
            同⼀个⾏为具有多个不同表现形式的能⼒
            优点:减少耦合、灵活可拓展
            ⼀般是继承类或者重写⽅法实现
    ​
    
    
    
    
    
    
    

     

 

第4集 编程语言面试题之新版javase接口篇

简介:讲解接口常见面试题,新版JDK8

  • 考点:基础是否扎实和常用语言是否有了解新语法

  • 难度【***】

  • Overload和Override的区别?

    
    
    
    重载Overload:表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同,参数个数或类型不同
    重写Override:表示子类中的方法可以与父类中的某个方法的名称和参数完全相同
    

     

  • 接口是否可以继承接口?接口是否支持多继承?类是否支持多继承?接口里面是否可以有方法实现

    • 接⼝⾥可以有静态⽅法和⽅法体
    • 接⼝中所有的⽅法必须是抽象⽅法(JDK8之后就不是)
    • 接⼝不是被类继承了,⽽是要被类实现
    • 接⼝⽀持多继承, 类不⽀持多个类继承

    ⼀个类只能继承⼀个类,但是能实现多个接⼝,接⼝能继承另⼀个接⼝,接⼝的继承使⽤extends关键字,和类继承⼀样

     

  • 是否了解JDK8里面接口新特性

    • interface中可以有static⽅法,但必须有⽅法实现体,该⽅法只属于该接⼝,接⼝名直接调⽤ 该⽅法
    • 接⼝中新增default关键字修饰的⽅法,default⽅法只能定义在接⼝中,可以在⼦类或⼦接⼝ 中被重写default定义的⽅法必须有⽅法体
    • ⽗接⼝的default⽅法如果在⼦接⼝或⼦类被重写,那么⼦接⼝实现对象、⼦类对象,调⽤该 ⽅法,以重写为准
    • 本类、接⼝如果没有重写⽗类(即接⼝)的default⽅法,则在调⽤default⽅法时,使⽤⽗类(接口) 定义的default⽅法逻辑

 

 

干货文档

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dev666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值