1. static 和 final 的用法

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

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

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

(1)静态方法只能调用静态方法;

(2)静态方法只能访问静态数据;

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

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

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

final修饰的变量的值不能被修改,是一个常量;final修饰的方法不能被重写;final修饰的类不能被继承;

2. 抽象类和接口的区别,类可以继承多个类吗,接口可以继承多个接口吗,类可以实现多个接口吗?

抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。

抽象类要被子类继承,接口要被类实现。

接口只能做方法声明,抽象类中可以做方法声明,也可以做方法实现

接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。

抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,一个实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。

抽象方法只能申明,不能实现。abstract void abc();不能写成abstract void abc(){}。

抽象类里可以没有抽象方法 。

如果一个类里有抽象方法,那么这个类只能是抽象类 。

抽象方法要被实现,所以不能是静态的,也不能是私有的。

接口可继承接口,并可多继承接口,但类只能单根继承。

3. this和super的功能和用法

this :

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

(2) 不可以在静态方法中使用

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

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

(1) 访问父类的方法和属性;

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

4. final, finally, finalize 的区别?

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

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

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

5. Error 和 Exception 有什么区别?

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

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

6. 说出Servlet的生命周期,并说出Servlet和CGI的区别。

Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy()方法。

与CGI的区别在于Servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于Servlet。

7. 如何防止缓存雪崩?

原因:

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

对应解决:

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

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

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

8. 谈谈你对MVC的理解

MVC是Model—View—Controler的简称。即模型—视图—控制器。MVC是一种设计模式,它强制性的把应用程序的输入、处理和输出分开。

MVC中的模型、视图、控制器它们分别担负着不同的任务。

视图: 视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并接受用户的输入。视图不进行任何业务逻辑处理。

模型: 模型表示业务数据和业务处理,相当于JavaBean。一个模型能为多个视图提供数据。这提高了应用程序的重用性。

控制器: 当用户单击Web页面中的提交按钮时,控制器接受请求并调用相应的模型去处理请求,然后根据处理的结果调用相应的视图来显示处理的结果。

MVC的处理过程:首先控制器接受用户的请求,调用相应的模型来进行业务处理,并返回数据给控制器。控制器调用相应的视图来显示处理的结果。并通过视图呈现给用户。

容易答错的java面试题_Java程序员面试中最容易答错的8道面试题,你中招了吗?...相关推荐

  1. java自动封箱_Java程序员面试,自动封箱/拆箱原理与包装类的缓冲机制你知道么?(转)...

    概述 本文中小编为大家细致的讲解了Java中基本数据类型对应的包装类以及包装类的缓冲机制在实际开发中的应用 . 并且对Java中基本数据类型的包装类的主要应用---自动封箱.自动拆箱做了底层剖析 . ...

  2. java面试时候算法题多吗_java程序员面试中最容易被问到的18个算法题(附答案!)...

    作者:cpp软件架构狮 链接:https://www.toutiao.com/i6618515311836529156/ (点击阅读原文前去围观) 算法是比较复杂又基础的学科,每个学编程的人都会学习大 ...

  3. mfc链表中的数据如何排序输出_java程序员面试中最容易被问到的18个算法题(附答案!)...

    算法是比较复杂又基础的学科,每个学编程的人都会学习大量的算法.而根据统计,以下这18个问题是面试中最容易遇到的,本文给出了一些基本答案,供算法方向工程师或对此感兴趣的程序员参考. 1)请简单解释算法是 ...

  4. android byte[] 转string 好多问号_java程序员面试遇到string题如何不凉?

    原标题:java程序员面试遇到string题如何不凉? 最近看到好多同学都在储备面试知识,以备来年轻松应对面试官,拿到心仪offer,之前好多同学反映遇到string,都只能送给自己一首凉凉.别凉,今 ...

  5. java程序员面试中的5个杀手锏问题

    java程序员面试中的5个杀手锏问题,不管你去面试的频率如何,下面这五个问题是每个软件工程师都应该问的--将有助于你确定自己在这家公司长期工作是否会合作愉快. 你们的企业文化是什么? 你每天将会有10 ...

  6. java xml 面试_Java程序员面试常见的10道XML面试题

    问题1:XML是什么? 答:XML即可扩展标记语言(Extensible Markup language),你可以根据自己的需要扩展XML, ,而不能使用用户定义的标签.使用DTD和XML Schem ...

  7. java中10d是什么意思_java程序员面试自我介绍

    java程序员面试自我介绍 当面试考官随便地问你:"谈谈你自己的情况如何?"这是面试中的第一个问题.此刻,你应把在此之前所有紧张不安的情绪稳定下来.因为这个问题,应试者已经做了充分 ...

  8. java程序员面试需要注意什么_Java程序员面试时要注意的一些问题

    Java程序员面试的时候会面临各种五花八门的问题,你的第一反应.思维逻辑.思考方法,专业水平决定了企业对你的评价和你的薪资水准,但是除了专业以外还有一些你需要避免出现错误的注意事项,如果很好的避免了, ...

  9. java程序员面试技术_java程序员面试应该具备的一些基本技能

    这里列举一些Java程序员面试应该要具备的一些基本技能,仅当参考. 1.基本语法 包括static.final.transient等关键字的作用,foreach循环的原理等等.越简单的问题越能看出一个 ...

最新文章

  1. 使用jdk生成ssl证书文件
  2. 如何吸收分数c语言,用C语言编程平均分数
  3. zabbix监控多台站点服务器
  4. filco蓝牙不好用_800元和300元的机械键盘差多少,Filco圣手104晒单
  5. PHP网页定时器和跳转页面
  6. 蓝桥杯第七届决赛JAVA真题----广场舞
  7. 2021中国出口跨境电商发展研究报告
  8. 转:android 避免内存泄露
  9. Eclipse之Project facet Java version 1.8 is not supported.
  10. python类中变量作用域_python进阶14变量作用域LEGB
  11. Media Player Classic - HC 源代码分析 1:整体结构
  12. 本地配置微信H5测试
  13. 米克科技 - 全新开发悬赏任务APP系统源码平台
  14. Stacked Hourglass学习笔记
  15. android 检查更新 卡住,阴阳师安装更新包卡住怎么办_安装更新包卡住解决办法...
  16. [Zer0pts2020]easy strcmp细节探究
  17. 计算机电缆芯数,DJYVP22电缆|电线(直径、重量、芯数)
  18. 新中新二代身份证dll调用,报尝试读取或写入受保护的内存,这通常指示其他内存已损坏 这个错 ...
  19. 中电投-镇宁3号集合资产管理计划
  20. sidebar(侧边栏原理vue admin)

热门文章

  1. 点站点链接出现短时间白屏或闪屏现象
  2. springboot 热部署的两种方式
  3. Flutter - sqflite(原滋原味)
  4. JavaScript强化教程——jQuery选择器
  5. 无根树转有根树的一般方法
  6. TextView属性大全
  7. Linux重启网络服务
  8. 福建省计算机二级c语言题型,计算机二级C语言题型和评分标准
  9. linux内核__force,Linux内核学习:I2C_SLAVE_FORCE
  10. 用什么来代替switch_一根转动的圆筒能有什么用?可以用它来代替机翼、船帆