首页
学习
活动
专区
工具
TVP
发布

程序员面试最容易答错这5道题,速来pick一下解决方案吧

工作是为了更好地生活,所以不少程序员会选择适当的跳槽来更快地涨薪资,但是,要知道,就算是作为一名有实力的程序员,如果在面试的时候不小心“掉坑”,不仅涨不了薪资,可能连合适的工作也很难找到。在这里巨牛汇外包小助手为各位小伙伴搜罗了一些Java程序员在面试时最容易中坑的几个问题,想要避免中坑的小伙伴们赶紧看过来吧!

1、this和super的功能和用法

this :

能访问除构造方法以外所有的属性、方法,通过this。来调用方法和属性

不可以在静态方法中使用

在构造方法中使用this(参数列表) 调用本类的其它构造方法,必须放在构造方法的第一句。

super :访问父类的方法和属性

访问父类的方法和属性;

在构造方法中通过 super(参数列表) 来调用父类的构造方法,必须放在子类构造方法里的第一行。

2、final, finally, finalize 的区别?

final:修饰符(关键字)有三种用法:如果一个类被声明为final,意味着它不能再派生出新的子类,即不能被继承。将变量声明为final,可以保证它们在使用中不被改变,被声明为final 的变量在初始化以后的引用中只能读取不可修改。被声明为 final 的方法也同样只能使用,不能在子类中被重写。

finally:通常放在try…catch的后面构造总是执行代码块,这就意味着程序无论正常执行还是发生异常,这里的代码只要JVM不关闭都能执行,可以将释放外部资源的代码写在finally块中。

finalize:Object类中定义的方法,Java中允许使用finalize 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在销毁对象时调用的,通过重写finalize 方法可以整理系统资源或者执行其他清理工作。

3、Error 和 Exception 有什么区别?

Error 表示系统级的错误和程序不必处理的异常,是恢复不是不可能但很困难的情况下的一种严重问题;比如内存溢出,不可能指望程序能处理这样的情况;

Exception 表示需要捕捉或者需要程序进行处理的异常,是一种设计或实现问题;也就是说,它表示如果程序运行正常,从不会发生的情况。

4、如何防止缓存雪崩?

原因:

缓存雪崩可能是因为数据未加载到缓存中,或者缓存同一时间大面积的失效,从而导致所有请求都去查数据库,导致数据库CPU和内存负载过高,甚至宕机。

对应解决:

采用加锁计数,或者使用合理的队列数量来避免缓存失效时对数据库造成太大的压力。这种办法虽然能缓解数据库的压力,但是同时又降低了系统的吞吐量。

分析用户行为,尽量让失效时间点均匀分布。避免缓存雪崩的出现。

如果是因为某台缓存服务器宕机,可以考虑做主备,比如:redis主备,但是双缓存涉及到更新事务的问题,update可能读到脏数据,需要好好解决。

5、static 和 final 的用法

static 的作用从三个方面来谈,分别是静态变量、静态方法、静态类。

静态变量:声明为 static 的静态变量实质上就是全局变量,当声明一个对象时,并不产生static 变量的拷贝,而是该类所有实例变量共用同一个 static 变量。也就是说这个静态变量只加载一次,只分配一块储存空间。

静态方法: 声明为static的静态方法有以下几个特点:

静态方法只能调用静态方法;

静态方法只能访问静态数据;

静态方法不能以任何方式引用this或super;

静态类:通常一个普通类不允许声明为静态,只有一个内部类才可以(main方法就是一个典型),这时这个声明的静态类可以直接作为一个普通类来使用,而不需要实例一个外部类。

final 的作用从变量、方法、类三个方面来理解:

final修饰的变量的值不能被修改,是一个常量;

final修饰的方法不能被重写;

final修饰的类不能被继承;

据说以上这五道题是Java程序员面试时最容易出错的题,希望对即将面试的程序员小伙伴们有所帮助。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190909A055HG00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券