每天几道面试题(第一天)
目录
- 第一幕 、
- 第一场)某大厦楼下大门前
- 第二场)电梯中
- 第三场)走廊中
友情提醒
背面试题很枯燥,加入一些戏剧场景故事人物来加深记忆。PS:点击文章目录可直接跳转到文章指定位置。 |
第一幕 、
第一场)某大厦楼下大门前
【门卫甲,门卫乙,面试者老王,路人等】
门卫甲:来者何人?报上名来。
老王:隔壁老王前来面试
门卫乙:现在面试Java的人很多,如果谁都放进去,恐怕总裁会责怪我们,你先说说1.Java的跨平台原理
,回答对了再进去面试吧。
老王:这个公司倒是有意思,门卫当起了面试官。Java实现跨平台是JVM(Java虚拟机)起的作用,编译好了一份Java字节码,换到不同的平台上时,并不需要重新编译,前提是这些平台上都安装了相应平台的JVM,JVM不是跨平台的。
门卫甲:我也有个问题,2.说一下Java的垃圾回收机制
,对了我去买个冰棍,老乙给你也带一根。
老王:给我也带一根钟薛高我就给你说垃圾回收机制;
垃圾回收器通常是作为一个单独的低级别的线程运行,对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。垃圾回收器不可以马上回收内存,可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。 回收机制包括:
①分代复制垃圾回收
不同生命周期的对象可以采取不同的收集方式,生命周期比较长的如Http请求中的 Session对象、线程、Socket连接。生命周期比较短的如:String对象。分代回收是把不同生命周期的对象放在不同代上,包括年轻代、年老代,和持久代,因此垃圾回收区域、时间也不一样。
②标记垃圾回收
使用标记清除算法,内存耗尽时,程序将会被挂起,垃圾回收开始执行.当所有的未引用对象被清理完毕时,程序才会继续执行。标记清除算法由两个阶段组成:
标记阶段,标记所有的可访问对象。
收集阶段,垃圾收集算法扫描堆并回收所有的未标记对象。
③增量垃圾回收
解决标记清除的长停顿问题。增量收集器把堆栈分为多个域,每次仅从一个域收集垃圾。这会造成较小的应用程序中断。
门卫乙:其实我也不知道你说的对不对,不过你照着手机读是不是有点过分了。手机收起来问你一个简单的。3.JVM加载class文件的原理机制?
老王:不知道
门卫乙:让你手机收起,你就不知道是吧,我来告诉你经过编译的Java源程序并不是一个可执行程序,而是一个或多个类文件,JVM会确保这个类被加载、连接(验证、准备和解析)和初始化。
①类的加载:是由类加载器和它的子类在运行时查找和装入类文件中的类,把.class文件中的数据读入到内存中。
②连接阶段:加载完成后,进入连接阶段,包括验证、准备(为静态变量分配内存并设置默认的初始值)和解析(将符号引用替换为直接引用)三个步骤。
③最后JVM对类进行初始化,包括:如果类有父类先初始化父类,类中存在初始化语句,就依次执行这些初始化语句
门卫乙:我话说完,你赞成还是反对。
老王:赞成。一直都是你问我,我也问你一个:4.门卫大哥,你对Java内存了解多少?
门卫乙:一般我不轻易显露自己的学识,但是你既然诚心诚意的发问了我就露一手:
①Java内存分为堆与栈,java中一个线程就会相应有一个线程栈与之对应,Main函数就是栈的起始点,也是程序的起始点即程序执行的入口。
②栈是运行时的单位,存储基本数据类型和堆中对象的引用以及当前程序相关的信息(局部变量、程序运行状态、方法、方法返回值)等, 而堆是存储的单元,存储对象信息如对象的属性。
③栈解决程序的运行问题,即程序如何执行(运行逻辑),或者说如何处理数据,堆解决的是数据存储的问题,即数据怎么放,放在哪儿。
④堆与栈的分离,使得堆中的内容可以被多个栈共享,提供了有效的数据交互方式,节省了空间。
⑤由于栈只能向上增长,就会限制住栈存储内容的能力,而堆中的对象是可以根据需要动态增长的,因此栈和堆的拆分使得动态增长成为可能,相应栈中只需记录堆中的一个地址即可。
门卫甲:你回来了。
门卫乙:是我回来了,不是你回来了。在上班时间能吃冰棍吗?老王你说说5.为什么不把基本类型放在堆中
门卫甲:抢答:因为基本类型占用的空间一般是1~8个字节,不会出现动态增长的情况—长度固定,因此栈中存储就够了,如果把它存在堆中是没有什么意义的
门卫乙;问你了吗,显眼包。老王回答一下6. java中的参数传递是传值呢?还是传引用?
门卫甲: 抢答: 对象传递是引用值传递(传递的是引用的地址值),基本数据类型传递是值传递
老王:我可以进去了吗?过度的饱食有伤胃口,毫无节制的门卫面试,结果只会让我错过面试的时间。— —对了把冰棍给我。
门卫甲/乙:要糕没有,要进去你就进去吧。
第二场)电梯中
【老王,保洁公司老板,保洁阿姨】
老板:关于公司保洁方面你已经做的很好了。但是其他种种事项还需要阿姨你单独来办公室单独讨论拟定。我知道你在这方面的阅历尚浅,先问你一个问题:7.你对面向对象思想的理解
保洁阿姨:想炒鱿鱼直接说,何必整这出。亏我昨天背了面试题:面向对象编程简称OOP技术,使用许多代码模块,每个模块都只提供特定的功能,它们是彼此独立的,可以增加代码重用的几率,更加有利于软件的开发、维护和升级。另外OOP的三大核心特性:继承、封装、多态的特性,使得在面对象编上能够设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展,而且成本较低,所以这一编程思想是目前一种应用最为普遍的软件设计思想。
老板:看来你还是有点功底:8.说说面向对象的三大特性
老王:我抢答:
①封装
封装就是把描述一个对象的属性和行为的代码封装在一个“模块”中,也就是一个类中,属性用变量定义,行为用方法进行定义,方法可以直接访问同一个对象中的属性。
②继承
继承是子类共享父类数据和方法的机制,这是类之间的一种关系,提高了软件的可重用性和可扩展性。在定义或实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并可以加入新的内容,或修改原来的方法使之更适合特殊的需要,这就是继承。
③多态
多态指的同一个对象,在程序不同时刻的多种运行状态。指的就是父类引用指向子类对象,调用方法时会调用子类的实现而不是父类的实现。不同子类继承了同一个父类。当我们统一用父类引用变量去调用这些不同的子类对象中的方法时,我们称为多态。
为使多态能运行,存在着继承或者实现关系
可以将子类的对象赋给父类/接口,以多态的形式来传递参数,增强了参数类型的灵活性。
多态的好处和弊端:
好处:多态的存在提高了程序的扩展性和后期可维护性
弊端:虽然可以预先使用,但是只能访问父类中已有的功能,运行的是后期子类的功能内容。不能预先使用子类中定义的特有功能。
多态应用场景:当接口已经确定,但同一个接口在不同环境需要不同实现的时候。如:工厂模式
老板:你是谁,还抢答,不过看起来答得不错,来保洁公司上班吧。
老王:口出狂言。
保洁阿姨:老板我要辞职去面试Java。
第三场)走廊中
【保洁阿姨,老王】
保洁阿姨:“对潇潇暮雨洒江天,一番洗清秋。渐霜风凄紧,关河冷落,残照当楼。是处红衰翠减,苒苒物华休。惟有长江水,无语东流。不忍登高临远,望故乡渺邈,归思难收。叹年来踪迹,何事苦淹留。想佳人、妆楼颙望,误几回、天际识归舟。争知我、倚栏杆处,正恁凝愁。”请问:9.有几种方法倒序输出这首词
老王:这话题过弯速度太快了吧。我百度了一下有四种方法:
①利用String类的toCharArray(),再倒序输出数组的方法。
/** 利用String类的toCharArray(),再倒序输出数组的方法*/private static void reverseString1(String str) {char[] chr = str.toCharArray();for (int i = chr.length-1 ; i >= 0; i--) {System.out.print(chr[i]);}System.out.println("\t");}
②利用String类提供的subString()方法,利用递归的办法输出倒序字符串。
/** 利用String类提供的subString()方法,利用递归的办法输出倒序字符串。*/private static void reverseString2(String str) {if (str.length() == 1)System.out.println(str);else {String subString1 = str.substring(0, str.length() - 1);String subString2 = str.substring(str.length() - 1);System.out.print(subString2);reverseString2(subString1);}}
③定义一个StringBuffer类,用StringBuffer类中的reverse()方法直接倒序字符串。
/** string倒序输出 * 定义成一个StringBuffer类,用StringBuffer类中的reverse()方法直接倒序字符串。* 2018-5-18 13:22:10*/private static void reverseString3(String str) {StringBuffer buffer = new StringBuffer(str);System.out.println(buffer.reverse());}
④利用字符串串联符号"+"特性
public class MyTest {public static void main(String[] args) {String s = "对潇潇暮雨洒江天";String s2 = "";for (int i = s.length() - 1; i >= 0; i--) {s2 += s.charAt(i);}System.out.println(s2);}}
}
保洁阿姨:你有对象吗?我看你Java基础知识很扎实啊。不如介绍一下10.Java对象初始化顺序
老王:有那么一秒我认为我要脱单了。Java对象初始化顺序如下:
①第一种是本类的初始化
静态变量、静态初始化块、变量、初始化块、构造函数
②第二种是含有父类的初始化顺序。
父类静态变量、父类静态初始化块、子类静态变量、子类静态初始块、父类变量、父类初始化块、父类构造函数、子类变量、子类初始化块、子类构造函数。
老王:礼尚往来我也问你一个问题吧。Java类都有一个共同的祖先类,就是Object,请问11.Object中有哪些方法:
保洁阿姨:我当然知道:
protected Object clone() 创建并返回此对象的一个副本。
boolean equals(Object obj) 指示其他某个对象是否与此对象“相等”。
Class<?> getClass() 返回此 Object 的运行时类。
int hashCode() 返回该对象的哈希码值。
void notify() 唤醒在此对象监视器上等待的单个线程。
void notifyAll() 唤醒在此对象监视器上等待的所有线程。
String toString() 返回该对象的字符串表示。
void wait() 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。
老王:12.方法重载和重写的区别?Overload的方法是否可以改变返回值的类型?
保洁阿姨:
Overload是重载,Override是覆盖,也就是重写。
①重载Overload
表示同一个类中可以有多个名称相同的方法,但这些方法的参数列表各不相同(即参数个数或类型不同)。是否可以改变返回值类型,在重载的定义中,与方法是什么类型返回值无关
②重写Override
表示子类中的方法可以与父类中的某个方法的名称和参数完全相同,通过子类创建的实例对象调用这个方法时,将调用子类中的定义方法,这相当于把父类中定义的那个完全相同的方法给重写了,这也是面向对象编程的多态性的一种表现。子类覆盖父类的方法时,只能比父类抛出更少的异常,或者是抛出父类抛出的异常的子异常,子类方法的访问权限只能比父类的更大,不能更小。
保洁阿姨:面试的真谛在于:那就是认清了面试的真相后,依然热爱面试。发觉了工作的残酷后,依然过着美丽人生。祝你好运。
相关文章:
每天几道面试题(第一天)
目录 第一幕 、第一场)某大厦楼下大门前第二场)电梯中第三场)走廊中 友情提醒 背面试题很枯燥,加入一些戏剧场景故事人物来加深记忆。PS:点击文章目录可直接跳转到文章指定位置。 第一幕 、 第一场)某大厦楼下大门前…...
[paddle]paddlepaddle官方安装命令合集
官方最新安装命令: https://www.paddlepaddle.org.cn/install/quick?docurl/documentation/docs/zh/install/pip/windows-pip.html 历史命令: V2.4 环境支持 Python 版本 3.6/3.7/3.8/3.9/3.10 PIP安装方式 Windows 安装 GPU版本支持CUDA 10.2/11.…...
使用JS实现一个简单的观察者模式(Observer)
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 手撸Observer⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领…...
智能井盖传感器:高效守护城市道路安全
近年来,井盖出问题导致事故的报道时有发生,但却容易被公众所忽视。井盖作为城市基础设施的一部分,主要用于保护下方的供水管道、下水道以及电信线缆等。然而,由于长时间使用、缺乏维护、设计不合理等原因,井盖出现问题…...
pycharm创建py文件时自动添加基础信息--模板
在图片中加入下面基本信息,这些基本信息可以自己定义: #!/usr/bin/env python # -*- coding: utf-8 -*- # Time : ${DATE} ${TIME} # Author : supermps # File : ${NAME}.py # Software : ${PRODUCT_NAME} import logging import math import w…...
Notpad++常用正则表达式替换案例集锦
1、在每行的开头加上单引号 2、在每行的结尾加上单引号 3、“删除”某个关键字之前字符串 原始字符串: 注:仅保留含有"[条件日志]:"之后的内容,“日志:”前面的内容“删除”掉,即替换为“”。 4、“删除”某个关键字…...
DGA行为转变引发了对网络安全的担忧
Akamai的研究人员发现,在域名系统(DNS)流量数据中,动态种子域生成算法(DGA)家族的行为发生了令人担忧的变化。这一发现揭示了恶意行为者如何调整他们的策略来延长他们的指挥与控制(C2)通信通道的寿命,以保护他们的僵尸网络。 从技术角度来看…...
微信小程序开发---页面导航
目录 一、页面导航的概念 二、页面导航的实现 (1)声明式导航 1、概念 2、导航到tabBar页面 3、导航非tabBar页面 4、后退导航 (2)编程式导航 1、导航到tabBar页面 2、导航到非tabBar页面 3、后退导航 三、导航传参 &…...
torch.nn中的L1Loss和MSELoss
我们打开Pytorch官网,找到torch.nn中的loss function,进去如下图所示。 L1LOSS 我们先来看看 L1LOSS 损失函数的使用。下图是官网给出的描述。 L1loss有两种方式,一种是将所有误差累加作为总损失,另一种是将所有误差累加之后求平…...
Speech | 语音处理,分割一段音频(python)
本文主要是关于语音数据在处理过程中的一些脚本文件以及实例,所有代码只需要更改所需处理的文件路径,输出路径等,全部可运行。 目录 所需环境 方法1:将一整段音频按时间批量切成一个一个音频 方法2:将一整段音频按…...
【深度学习】 Python 和 NumPy 系列教程(三):Python容器:1、列表List详解(初始化、索引、切片、更新、删除、常用函数、拆包、遍历)
目录 一、前言 二、实验环境 三、Python容器(Containers) 0、容器介绍 1、列表(List) 1. 初始化 a. 创建空列表 b. 使用现有元素初始化列表 c. 使用列表生成式 d. 复制列表 2. 索引和切片 a. 索引 b. 负数索引 c. 切…...
【C++笔记】C++string类模拟实现
【C笔记】Cstring类模拟实现 一、实现模型和基本接口1.1、各种构造和析构1.2、迭代器 二、各种插入和删除接口2.1、插入接口2.2、删除接口2.3、resize接口 三、各种运算符重载3.1、方括号运算符重载3.2、各种比较运算符重载 四、查找接口4.1、查找字符4.2、查找子串 五、流插入…...
操作系统之课后习题——引论
(一)简答题 1.在计算机系统上配置OS的目标是什么?作用主要表现在哪几个方面? 答: 在计算机系统上配置OS,主要目标是实现:方便性、有效性、可扩充性和开放性; OS的作用主要表现在以下…...
【PHP代码审计】反序列化漏洞实战
文章目录 概述资源下载地址Typecho代码审计-漏洞原理call_user_func()_applyFilter()、get()与__get__toString()__construct()install.php POC利用漏洞利用复现利用链执行phpinfo()GET利用POST利用 getshell生成payload漏洞利用蚁剑连接 总结 概述 序列化,“将对象…...
Socks5 与 HTTP 代理在网络安全中的应用
目录 Socks5和HTTP代理在网络安全中的应用。 Socks5代理和HTTP代理的优点和缺点。 选择合适的代理IP需要考虑的因素: 总结 在网络安全领域中,Socks5和HTTP代理都扮演着重要的角色。作为两种不同的代理技术,它们在网络安全中的应用各有特点…...
进阶C语言-指针的进阶(中)
指针的进阶 📖5.函数指针📖6.函数指针数组📖7.指向函数指针数组的指针📖8.回调函数 📖5.函数指针 数组指针 - 指向数组的指针 - 存放的是数组的地址 - &数组名就是数组的地址。 函数指针 - 指向函数的指针 - 存放的…...
保姆级-微信小程序开发教程
一,注册微信小程序 如果你还没有微信公众平台的账号,请先进入微信公众平台首页,点击 “立即注册” 按钮进行注册。注册的账号类型可以是订阅号、服务号、小程序以及企业微信,我们选择 “小程序” 即可。 接着填写账号信息&#x…...
数据库-DQL
DQL:用来查询数据库表中的记录 关键字:SELECT 语法: select:字段列表 from:表名列表 where:条件列表 group by:分组列表 having:分组后条件列表 order by:排序字段列表…...
19 螺旋矩阵
螺旋矩阵 题解1 循环(4个标志——根据顺时针)题解2 方向 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 提示: - m matrix.length - n matrix[i].length - 1 < m, n <…...
数据结构与算法:概述
目录 算法 评价标准 时间的复杂度 概念 推导原则 举例 空间的复杂度 定义 情形 运用场景 数据结构 组成方式 算法 在数学领域,算法是解决某一类问题的公式和思想; 计算机科学领域,是指一系列程序指令,用于解决特定的…...
顺序表详解
💓 博客主页:江池俊的博客⏩ 收录专栏:数据结构探索👉专栏推荐:✅C语言初阶之路 ✅C语言进阶之路💻代码仓库:江池俊的代码仓库🔥编译环境:Visual Studio 2022Ἰ…...
基于RabbitMQ的模拟消息队列之六——网络通信设计
自定义基于TCP的应用层通信协议。实现客户端对服务器的远程调用 编写服务器及客户端代码 文章目录 基于TCP的自定义应用层协议一、请求1.请求格式2.创建Request类 二、响应1.响应格式2.创建Response类 三、客户端-服务器交互四、type五、请求payload1.BasicAruguments(方法公共…...
算法:数组中的最大差值---“打擂台法“
文章来源: https://blog.csdn.net/weixin_45630258/article/details/132737088 欢迎各位大佬指点、三连 1、题目: 给定一个整数数组 nums,找出给定数组中两个数字之间的最大差值。要求,第二个数字必须大于第一个数字。 2、分析特…...
三种方式查看 JVM 垃圾收集器
一、引言 不同版本的 JVM 默认使用的垃圾收集器是不同的,目前的新生代和老年代的垃圾收集器如下图所示,新生代和老年代之间的连线表示这些垃圾收集器可以进行搭配使用 垃圾收集器的名字和 JVM 里面的参数对照表如下,即在 JVM 里面并不是存储的…...
React中函数式组件与类组件有何不同?
Function Component 与 Class Component 有何不同 目录 Function Component 与 Class Component 有何不同 文章核心观点: 解释一下: 总结: 文章核心观点: Function components capture the rendered values.函数式组件捕获…...
windows11安装docker时,修改默认安装到C盘
1、修改默认安装到C盘 2、如果之前安装过docker,请删除如下目录:C:\Program Files\Docker 3、在D盘新建目录:D:\Program Files\Docker 4、winr,以管理员权限运行cmd 5、在cmd中执行如下命令,建立软联接: m…...
python模块之 aiomysql 异步mysql
mysql安装教程 mysql语法大全 python 模块pymysql模块,连接mysql数据库 一、介绍 aiomysql 是一个基于 asyncio 的异步 MySQL 客户端库,用于在 Python 中与 MySQL 数据库进行交互。它提供了异步的数据库连接和查询操作,适用于异步编程环境 …...
开开心心带你学习MySQL数据库之第八篇
索引和事务 ~~ 数据库运行的原理知识 面试题 索引 索引(index) > 目录 索引存在的意义,就是为了加快查找速度!!(省略了遍历的过程) 查找速度是快了,但是付出了一定的代价!! 1.需要付出额外的空间代价来保存索引数据 2.索引可能会拖慢新增,删除,修改的速度 ~~ …...
yml配置动态数据源(数据库@DS)与引起(If you want an embedded database (H2, HSQL or Derby))类问题
1:yml 配置 spring:datasource:dynamic:datasource:master:url: jdbc:mysql://192.168.11.50:3306/dsdd?characterEncodingUTF-8&useUnicodetrue&useSSLfalse&tinyInt1isBitfalse&allowPublicKeyRetrievaltrue&serverTimezoneUTCusername: ro…...
yolov5运行过程遇到的小问题(随时更新)
1.关于git的问题 解决办法:插入下面代码 import os os.environ["GIT_PYTHON_REFRESH"] "quiet"2.页面太小无法完成操作 解决办法: 如果不好使再考虑降低Batch_Size大小或者调整虚拟内存可用硬盘空间大小!(调整虚拟内存…...
科技网站有哪些/网站关键词排名外包
微信小游戏开发过程中,在Cocos Creator刚构建完,点运行到微信开发者工具上,就出现上面这个报错提示。一、 原因分析app.json找不着,这是走的微信小程序入口,而不是微信小游戏入口,微信小游戏入口应该是game…...
西安知名网站制作公司/360搜索首页网址是多少
习题1:一个列表,排重,不能用set,也不能用字典 算法: 1、生成一个空列表result,存储排重后的元素 2、遍历列表的每一个元素,判断是否在result列表里面,如果不在,就添加到result列表中 3、如果在,不做任何操作 4、打印result列表 l=[1,2,3,4,1,2,3,4,1,2] result=[] fo…...
全球做的最好的公司网站/b2b网站推广排名
最近心血来潮,打算打造一个自己声音音色的播客 主要有这么几个模块: 1.素材爬虫 素材爬虫主要有这么几个问题,一个是版权问题,不是说网上所有的东西都能爬,而且都能够被我拿去播放的,因此这里打算先从古代的…...
浙江省住房建设局网站/合肥网站维护公司
微软的Ado.Net支持连接池,.EntityFrameworkCore.MySql同样支持连接池,并且默认也是开启连接池的,EntityFramework的使用教程请查看我的另一篇文章 EntityFramework基本使用_シ❤゛甜虾的个人博客-CSDN博客讲到EntityFramework,就先讲下数据分…...
网站的电子地图怎么做/网络营销优化推广公司
Scala面向对象编程综述 1.Scala是纯粹的面向对象的语言 Scala 是纯粹的面向对象的语言,每个值都是对象,每个操作都是方法调用。 2.Scala大量重用了Java中的类型 Scala 与 Java 完全兼容,Scala 程序会被编译成 Java 字节码,访问 J…...
网站地图如何更新/网页设计制作软件
CentOS进入图形界面 学习了: http://www.centoscn.com/CentosBug/osbug/2014/0831/3620.html http://bbs.csdn.net/topics/370008075?page1 与这些不太一致; 在/etc/inittab里面有命令的说明;...