每天几道Java面试题(第二天)

目录

  • 第二幕、
    • 第一场)公司前台
    • 第二场)公司卫生间

友情提醒

背面试题很枯燥,加入一些戏剧场景故事人物来加深记忆。PS:点击文章目录可直接跳转到文章指定位置。

第二幕、

第一场)公司前台

【接待人员埃斯卡莱罗,面试者老王,面试者奥斯卡】

奥斯卡:老王这个公司不好,你千万不要来面试,他们整天加班没有加班费,放假只能调休。

埃斯卡莱罗:老王别理他,他也是来面试的。你先填一下表格:1.Java基础语法面试题

问题答案
".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。一个文件中可以只有非public类,如果只有一个非public类,此类可以跟文件名不同
&和&&的区别&和&&都可以用作逻辑与的运算符,&&为短路与,另外&可以做为整数的位运算符,&&的两侧必须要求是布尔值或者布尔表达式。如果左侧为false程序不会去继续判断右侧表达式的真假。
java中的基本数据类型有哪些byte(位)1字节、short(短整数)2字节、int(整数)4字节、long(长整数)8字节、float(单精度)4字节、double(双精度)8字节、char(字符)2字节,boolean(布尔值)理论上占1bit。8bit是一字节。
Integer与int的区别int基本数据类型,Integer是java为int提供的封装类。int的默认值为0,而Integer的默认值为null,int是值传递值保存在值栈中,integer是引用地址传递,存在堆中通过对象的引用来调用。
char型变量中能不能存贮一个中文汉字char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中可以存储汉字。
7)short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器会提示错误,需要强制转换类型。由于+=是java语言规定的运算符,Java编译器会对它进行特殊处理,因此可以正确编译。
"=="和equals方法有什么区别?= =操作符专门用来比较两个变量的值是否相等,比较两个基本类型的数据或两个引用变量是否相等,只能用= =操作符。equals方法只能用于判断引用类型,重写后用于判断对象内容是否相同。不重写方法的话就是使用==操作符判断引用类型的地址值。所以一定要记得重写啊,不然白给
作用域public,private,protected,以及不写时的区别?public:当前类,同包,子类,其他包。protected:当前类,同包,子类。default:当前类,同包。private:当前类。
Java 常用包java.lang–语言包:包括Object类、Thread类、String、Math、System、Runtime、Class、Exception、Process等java.util–实用工具包:Scanner、Date、Calendar、LinkedList、Hashtable、Stack、TreeSet等;java.NET–网络功能包:URL、Socket、ServerSocket等;java.sql–数据库连接包:实现JDBC的类库;java.io–输入输出包:与流相关的包;
Java 常用接口Comparable ,Collection,Set, List, Map, Runnable Iterable Iterator 等

老王:奥斯卡,Java这么卷吗?保洁阿姨都来卷Java了,这也太抽象了。说到抽象:2.abstract class(抽象类)和interface(接口)有什么区别?

奥斯卡:
①抽象类:
含有abstract修饰符的class即为抽象类,abstract类不能创建实例对象。含有abstract方法的类必须定义为abstract class,有抽象方法和非抽象方法。abstract class类中定义抽象方法必须在具体子类中实现,所以,不能有抽象构造方法或抽象静态方法。如果子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型。
②接口:
接口中的成员变量类型默认为public static final。在Java 8之前,接口只能定义抽象方法,所有的方法都必须由实现该接口的类来实现。但是,在Java 8中,接口可以定义默认方法和静态方法。
一个接口可以实现多个父接口,将实现的各个接口用逗号隔开
接口的特点:是对外暴露的规则,是功能的扩展,接口的出现降低耦合性。

埃斯卡莱罗:聊什么呢,安静点。知道什么是静态关键字吗:3.static关键字

奥斯卡:
①静态初始化块:static{ } :
使用static来修饰的自由块只在类加载的时候执行一次,通常用于初始化静态变量。它只执行一次,它比main还先执行,执行顺序是静态代码块–构造方法
②static关键字声明属性(类属性):
静态变量也称为类变量,可以直接通过类名调用。也可以通过对象名调用。这个变量属于类,可以被该类的所有实例对象所共享,成员变量也称为实例变量,只能通过对象名调用,这个变量属于对象。
③static关键字声明方法:
可以在不创建对象的情况下,直接使用类名.方法名()的形式调用,静态方法只能访问静态成员,如果想在静态方法中调用非静态方法需要先创建对象。
④静态的特点:
随着类的加载而加载,优先于对象存在,对所有对象共享,可以被类名直接调用

埃斯卡莱罗:4.abstract修饰的方法是否可同时是static或native或是synchronized?

奥斯卡:
不可以
①abstract与static不能同时使用
static关键字修饰的成员是属于类的,其可以直接被类所调用。而abstract修饰的方法为抽象方法为了让子类继承后重写该方法,即无方法体的方法,不能够被直接调用,需要在子类或实现类中去编写完整的方法处理逻辑后才能使用。
②native与abstract不能共用
表示该方法要用另外一种依赖平台的编程语言实现的,不存在着被子类实现的问题,所以,它也不能是抽象的,不能与abstract混用。
③synchronized和abstract不能共用
abstract方法只能存在于抽象类或接口中,它不能直接产生对象,而默认synchronized方法对当前对象加锁,没有对象是不能加锁。另外synchronized不能被继承,子类继承时,需要另加修改符。

老王:人生最终的价值在于觉醒和思考的能力,而不只在于面试。— —亚里士老王

第二场)公司卫生间

【如厕计时器(控制员工上厕所时间),面试者老王】
老王:出恭。

如厕计时器:你有30秒的时间摆脱你的沉重负担。超时将会扣钱。回答面试题可以延长时间。5.说一下单例(Singleton)设计模式

老王:今天算是长见识了。良心公司,强迫症福利,还有助学习进步。
单态设计模式创建一个类,应满足:
①构造函数私有化
②本类中创建一个该类私有对象
③为了方便其他程序访问到该类对象,可对外提供一个公共访问方式
Runtime类就是单例设计模式。

饿汉式:当类加载的时候,就创建对象。

	class Single{private Single(){}//将构造函数私有化,不让别的类建立该类对象private static final Single s=new Single();//自己建立一个对象public static Single getInstance()//提供一个公共访问方式{return s;}}		

懒汉式:类才加载进内存的时候,对象还没有存在,只有调用了 getInstance()方法时,对象才开始创建。

class Single{private Single(){} private static Single s;public static Single getInstance(){if(s==null)s=new Single();return s;}}	

懒汉式是延迟加载,如果多个线程同时操作懒汉式时就有可能出现线程安全问题,可以加同步来解决。但是加了同步之后,每一次都要比较锁,效率就变慢了,所以可以加双重判断来提高程序效率

	public static Single getInstance(){if(s==null){synchronized(Single.class){if(s==null) s=new Single();}}return s;}

如厕计时器:看来你已经明白了单例设计模式的意义,卫生间也是这样设计的噢,不允许有两个对象在同一个坑位。

老王:快点问下一个问题,没时间了。

如厕计时器:6.final关键字

老王:
①final类:不可被继承,如java.lang.Math就是一个 final类,不可被继承。
②final变量:在初始化后不可改变变量值,用于常量定义。如果final变量是引用变量,则不可以改变它的引用对象,但可以改变对象的属性。final修饰的变量是一个常量。只能被赋值一次。
③final方法:不可被重写
④final是引用变量不能重新赋值,但是引用指向的对象的内容可以变化

1:有编译错误
final StringBuffer a=new StringBuffer("immutable");
a=new StringBuffer("");2:正确final StringBuffer a=new StringBuffer("immutable");a.append(123);

如厕计时器:7.说一下内部类

老王:心很累:
①内部类:
定义在一个类内部的类(inner class),内部类的对象能访问它所处类的私有数据
内部类能隐藏起来不为同一个包中其他类访问,当内部类定义在外部类的成员位置,而且非私有,则可以在其他外部类中直接建立内部类对象
格式:外部类名.内部类名 变量名 = new 外部类对象.内部类对象
如:Outer.Inner in = new Outer().new Inner()
②匿名内部类
前提:继承一个类或者实现一个接口
好处:简化代码书写
弊端:不能直接调用自己的特有方法,不能执行强转换动作
格式:
new 父类名或者接口名()
{
重写父类方法或者实现接口中的方法。
也可以自定义其他方法。
};

如厕计时器:8.说一下String

老王:①字符串虽然是引用类型属于对象,但是它不是存储在堆空间中,而是存储在方法区中的字符串常量池中。
②String的底层是数组。jdk1.8及以前String使用的是char数组,jdk1.9及以后使用的是byte数组。
③字符串内容做= =比较,比较的是地址值。
④字符串与基本类型之间的转换

//类型转换:字符串转为基本类型String s1 = "123";int i = Integer.parseInt(s1);String s2 = "3.14";double d = Double.parseDouble(s2);//类型转换:基本类型 -> Stringint num = 123;String s5 = num + "";String s6 = Integer.toString(num);String s7 = String.valueOf(num);

⑤String类常用方法:将字符串内容转换为全大写/小写

	String toLowerCase():将此 String 中的所有字符都转换为小写。 String toUpperCase():将此 String 中的所有字符都转换为大写。int indexOf(String str):返回指定子字符串在此字符串中第一次出现处的索引。 int indexOf(String str, int fromIndex):返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。 int lastIndexOf(String str):返回指定子字符串在此字符串中最右边出现处的索引。 int lastIndexOf(String str, int fromIndex):返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。 String substring(int beginIndex): 截取字符串从起始索引截取到最未String substring(int beginIndex, int endIndex): 截取字符串满足含起始索引不含结束索引String[] split(String regex):根据给定正则表达式的匹配拆分此字符串。String concat(String str):将指定字符串连接到此字符串的结尾

如厕计时器:9.说一下StringBuffer与StringBuilder的区别

老王:
①String对象是不可变对象,指的是想要改变字符串值时会复用字符串常量池中的地址值。StringBuffer与StringBuilder则是可变的字符序列,能修改值。
②拼接字符串时,String会产生新对象,而StringBuffer只是增加新字符,不产生新对象,因此效率高。
③缓冲区就是一个临时空间,它里面可以临时存储数据。缓冲区本身就是一个容器,把需要修改的字符串先存储到字符串缓冲区容器中,在容器中修改完成后存储在字符串常量池中。
④StringBuffer不提供线程同步,StringBuilder是线程同步的,StringBuilder效率不如StringBuffer,但是StringBuilder 的方法不是线程安全的(不能同步访问)。由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下会使用 StringBuilder 类。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/76932.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

<图像处理> 空间滤波基础二

空间滤波基础二:锐化 锐化的作用的突出灰度中的过渡。图像锐化通过空间微分来实现,微分将增强边缘和其他不连续(噪声),不强化灰度变化缓慢的区域。图像锐化也叫做高通滤波,通过高频,抑制低频。…

无涯教程-JavaScript - DB函数

描述 DB函数使用固定余额递减法返回指定期间内资产的折旧。 语法 DB (cost, salvage, life, period, [month])争论 Argument描述Required/OptionalCostThe initial cost of the asset.RequiredSalvageThe value at the end of the depreciation (sometimes called the salv…

基于SSM的助学贷款管理系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

手撕代码是程序员的基本功吗?

前言: 现在众多企业都要求在面试中用“手撕代码”来考验应聘者的代码能力,你觉得手敲代码是否可以体现真实的基础实力? 本期话题: 1、你觉得手撕代码是程序员的基本功吗? 2、为什么会用“手撕代码”来考验程序员能力&a…

vue学习之属性绑定

内容渲染 采用 &#xff1a;进行属性渲染创建 demo3.html,内容如下 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"&…

c++day4

仿照string类&#xff0c;完成myString 类 #include <iostream> #include<cstring>using namespace std; class myString {private:char *str; //记录c风格的字符串int size; //记录字符串的实际长度public://无参构造myString():size(10){str…

Datax 数据同步-使用总结(二)

一、前言 这部分主要记录 datax 实现增量同步的方案。 二、核心思路 结合datax 提供的preSql、 postSql以及占位符&#xff0c;外加另外一张表同步日志表来记录相关同步信息。 三、版本迭代 3.1 初版本 where tbq.opera_date > cast(date_format(DATE_SUB(NOW(), inte…

SpringMVC之文件上传下载

SpringMVC之文件上传下载 一、文件上传二、文件下载三、多文件上传 一、文件上传 配置多功能视图解析器&#xff08;spring-mvc.xml&#xff09;&#xff1a;在Spring MVC的配置文件&#xff08;spring-mvc.xml&#xff09;中配置多功能视图解析器&#xff0c;以支持文件上传。…

C++11 新特性 ⑤ | 仿函数与 lambda 表达式

目录 1、引言 2、仿函数 3、lambda表达式 3.1、lambda表达式的一般形式 3.2、返回类型说明 3.3、捕获列表的规则 3.4、可以捕获哪些变量 3.5、lambda表达式给编程带来的便利 VC常用功能开发汇总&#xff08;专栏文章列表&#xff0c;欢迎订阅&#xff0c;持续更新...&a…

PyTorch实现注意力机制及使用方法汇总,附30篇attention论文

还记得鼎鼎大名的《Attention is All You Need》吗&#xff1f;不过我们今天要聊的重点不是transformer&#xff0c;而是注意力机制。 注意力机制最早应用于计算机视觉领域&#xff0c;后来也逐渐在NLP领域广泛应用&#xff0c;它克服了传统的神经网络的的一些局限&#xff0c…

JAVAEE初阶相关内容第十一弹--多线程(进阶)

目录 一、常见的锁策略 1乐观锁VS悲观锁 1.1乐观锁 1.2悲观锁 2.轻量级锁VS重量级锁 2.1轻量级锁 2.2重量级锁 3.自旋锁VS挂起等待锁 3.1自旋锁 3.2挂起等待锁 4.互斥锁VS读写锁 4.1互斥锁 4.2读写锁 5.公平锁VS非公平锁 5.1公平锁 5.2非公平锁 6.可重入锁VS不…

Codeforces Round 592 (Div 2)(A - G)

Codeforces Round 592 (Div. 2)&#xff08;A - G&#xff09; Dashboard - Codeforces Round 592 (Div. 2) - Codeforces A. Pens and Pencils(思维) 思路&#xff1a;比较完成 绘画课 和 讲座 所需的 最小笔数 和 k 的关系即可。 时间复杂度 O ( 1 ) 时间复杂度O(1) 时间复…

MemJam: A false Dependency attack against constant-time crypto implementations

作者&#xff1a;A. Moghimi, J. Wichelmann, T. Eisenbarth, and B. Sunar. 发布&#xff1a;International Journal of Parallel Programming 时间&#xff1a;Aug 2019. 笔记&#xff1a; 缓存定时攻击 1、攻击原理 共享缓存存在定时侧信道的风险&#xff08;例如在处理…

设计模式课件

设计模式 创建型设计模式的分类&#xff0c;定义结构型设计模式的分类&#xff0c;定义行为型设计模式的分类&#xff0c;定义 设计模式的分类&#xff0c;在23种设计模式中&#xff0c;每一种属于哪一种的设计模式设计模式的应用场景设计模式的图形&#xff08;考察较少&#…

函数式编程:一等对象、作用域和高阶函数的综合指南

函数介绍 函数式编程一等对象的特点作用域&#xff08;scope&#xff09;全局作用域函数作用域 命名空间&#xff08;namespace&#xff09;练习实操求阶乘递归函数幂运算函数测试代码 高阶函数接收函数作为参数&#xff0c;或者将函数作为返回值的函数是高阶函数将函数作为返回…

Gin-swaggo为gin框架提供Swagger 文档

官方: https://github.com/swaggo/gin-swagger 开始使用 为API方法增加注释,加在controller(api)层, See Declarative Comments Format.运行下面命令下载swgo: go get -u github.com/swaggo/swag/cmd/swag Go 1.17后的版本, 使用 go get 安装可执行文件已被废弃. 用go ins…

华为云云耀云服务器L实例评测|带宽,磁盘,CPU,内存以及控制台监控测试

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌&#xff0c;CSDN博客专家&#xff0c;阿里云社区专家博主&#xff0c;2023年6月CSDN上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;AWS/阿里云资深使用…

Python从零到一构建项目

随着互联网的发展&#xff0c;网络上的信息量急剧增长&#xff0c;而获取、整理和分析这些信息对于很多人来说是一项艰巨的任务。而Python作为一种功能强大的编程语言&#xff0c;它的爬虫能力使得我们能够自动化地从网页中获取数据&#xff0c;大大提高了效率。本文将分享如何…

LeetCode 449. Serialize and Deserialize BST【树,BFS,DFS,栈】困难

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…

【技术分享】RK Android11系统SD卡启动方法

本文基于Purple Pi OH 3566主板&#xff0c;介绍Android11源码的修改&#xff0c;获得可从SD卡启动的Android11系统镜像。 Purple Pi OH作为一款兼容树莓派的开源主板&#xff0c;采用瑞芯微RK3566 (Cortex-A55) 四核64位超强CPU,主频最高达1.8 GHz,算力高达1Tops&#xff0c;…