java基础题系列(1 - 10)

2023-10-27

说在前面:

马上就要到秋招了,也从网上获取了一些java的基础面试题(总共有100多道),为了保持状态,每天回顾10道左右,如果result有不对的地方,希望各位大佬可以指正,谢谢。

20200706 by 1z

  1. 请你说说java和php的区别
1:java是半编译语言,php是脚本语言

2:java使用封装继承,最小的单位是类,php作为脚本,最小单位就是语句,用两者输出hello world就知道了,
所以java语法比较严格,而php很灵活

3:java是自动内存分配回收,php是一次创建一次销毁,
相同点:两者都不用考虑内存泄漏问题,
不同点:java可以常驻内存,多线程;php无法常驻内存,也没有线程的概念

4:java分三个方向      
J2ME,嵌入式设备,安卓就是目前最大的J2ME平台,不过其使用的不是JVM,而是谷歌自己开发的虚拟机      
J2SE,桌面编程,基本没落,需要JVM支持      
J2EE,web方向的编程,

5:java已经是一门很成熟的语言,或者说其语言的进一步提升已经不可能了,曾经看到一篇文章,讲编程语言的进化,其中提到,java语言的进化树太全了,使得其没有发展的空间php是在web繁荣之后兴起的语言,所以语言成熟度没有java高,2006年推出的php5.0才略微完善了面向对象的机制

ps: 网上白嫖的 这种理论题仁者见仁智者见智吧...
  1. 请你谈谈java中是如何支持正则表达式操作的
Java中的String类提供了支持正则表达式操作的方法,
包括:matches()replaceAll()replaceFirst()split()。

此外,Java中可以用Pattern类表示正则表达式对象,它提供了丰富的API进行各种正则表达式操作,
  1. 请你简单描述一下正则表达式及其用途
在处理字符串时,经常会有 查找符合 某些 复杂规则的字符串的需要,正则表达式就是用于 描述这些规则的工具
  1. java和javaScript的区别
1.就像老婆和老婆饼的区别,雷锋和雷峰塔的区别一样

2.相同点
* 它们的语法和c语言很相似
* 它们都是面向对象的
* javascript在设计的时候参考了java的命名规则

3.不同点
* javascript是动态类型的语言,java是静态类型的语言(运行期确定数据类型)
	静态:编译时确定数据类型,发现类型错误等错误
	动态:运行时确定数据类型,发现类型错误等错误
	
* JavaScript是弱类型的,java是强类型的
	强类型:不容忍数据类型隐形转换
	弱类型:容忍数据类型隐形转换
	
* javascript是基于原型的 java是基于类的
  1. 在java中如何跳出当前的多重嵌套循环
* 使用break + flag
* 可以使用throw new Exception("xxx") 跳出循环
* 直接return
* 使用break + 标号label
	public class OutLoopWithLabel{
	public static void main(String args[]) {
		ok: // 设定跳出当前循环的一个标号 注意ok后面是冒号:
		for (int i = 0; i < 10; i++) {
			for (int j = 0; j <= 10; j++) {
				System.out.println("i=" + i + ",j=" + j);
				if (j == 5)
					break ok; // 设定跳出当前循环的一个标号
			}
		}
	}
}

-----------------------------------------------
public class BreakLabel {
	public static void main(String[] args) {
		boolean flag = false;
		for(int i = 0;i < 10 && !flag;i++) {
			for(int j = 0;j <= 10;j++) {
				System.out.println("i=" + i + ",j=" + j);
				if(j == 5) {
					flag = true;
					break;
				}
			}
		}
	}
}
--------------------------------------------------------
throw
--------------------------------------------------------
return 
  1. 请你讲讲& 和 && 的区别
对于 两侧不是boolean值而言:
&&无效,& 表示进行位运算(与运算),&00’
tip: 计算某二进制数的最低位1的数量 可以使用 x & (x - 1)进行计算
剑指offer原题: 输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。
public class Solution {
    public int NumberOf1(int n) {
        int count = 0;
        while(n != 0){
            count++;
            n = n & (n - 1);
        }
        return count;
    }
}

对于两侧是boolean值而言:
&&& 都可以表示为逻辑与(and),当两侧为true的时候,结果为true,否则只有一方为false,结果为false

同时 && 具有短路的功能 只要第一个表达值为false 就不会进行计算下一个

tip: if(str != null && !str.equals(""))表达式
当str == null的时候
&& 不会抛出 NullPointerException
& 会抛出 NullPointerException




  1. int 和Integer有哪些区别?
* Integer是int的包装类;int是基本数据类型;
* Integer变量必须实例化后才能使用;int变量不需要;
* Integer实际是对象的引用,指向此new的Integer对象(new在堆上);int是直接存储数据值(基本数据值存储在栈区的局部变量表内部)* Integer的默认值是null;int的默认值是0
------------------------------------
* 拓展点
1. Integer的常量池技术(简单而言 建立Integer值在 -128-127之间的时候就会直接使用池内数据)【源码可查】
public static Integer valueOf(int i) {
         assert IntegerCache.high >= 127;
         if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
         return new Integer(i);
     }
     
2. Integer和int的自动拆装箱机制(https://blog.csdn.net/wufaliang003/article/details/82347077)

# 装箱源码
int val = 10;
Integer i = Integer.valueof(10);

# 拆箱源码
Integer integerVal = 100;
int val = integerVal.intValue();


  1. 我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,请你讲讲如何输出一个某种编码的字符串
/**
	 *  1、public String(byte[] bytes, Charset charset) :
	 * 使用指定的字符集解码指定的字节数组来构造新的字符串。

      2、public byte[] getBytes(Charset charset):
      使用给定的字符集将该字符串编码为一个字节序列,并将结果存储到一个新的字节数组中。
	 * */
	//以下代码实现了将字符编码为iso8859-1的字符串 => 输出为gbk编码的字符串
	public static String translate(String str) throws IOException{
		return new String(str.getBytes("ISO-8859-1"), "GBK");
	}
  1. 请你说明以下String和StringBuffer的区别(再加一个StringBuilder)
String: 不可变的字符序列

StringBuilder: (jdk 1.5)可变的字符序列,效率高,但是线程不安全

StringBuffer: 可变字符序列,效率低,但是线程安全(效率低的原因 内部有很多重量锁操作 synchronized------------------------------------------------
String 底层是一个finalchar[] 数组,在每次对String的操作都会生成新的String对象,造成内存的浪费
private final char value[]

补充内容: String内部的缓冲池: 
https://blog.csdn.net/TTTZZZTTTZZZ/article/details/84892985?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
------------------------------------------------
StringBuilder和StringBuffer继承了AbstractStringBuilder,底层是一个char[](没有final!!!)
    
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 
StringBuilder 的方法不是线程安全的(不能同步访问)

由于 StringBuilder 相较于 StringBuffer 有速度优势,
所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,
则必须使用 StringBuffer 类。
--------------------------------------------------------

  1. 请你说明一下int和Integer的区别(重复题 )
* Integer是int的包装类;int是基本数据类型;
* Integer变量必须实例化后才能使用;int变量不需要;
* Integer实际是对象的引用,指向此new的Integer对象(new在堆上);int是直接存储数据值(基本数据值存储在栈区的局部变量表内部)* Integer的默认值是null;int的默认值是0
------------------------------------
* 拓展点
1. Integer的常量池技术(简单而言 建立Integer值在 -128-127之间的时候就会直接使用池内数据)【源码可查】
public static Integer valueOf(int i) {
         assert IntegerCache.high >= 127;
         if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
         return new Integer(i);
     }
     
2. Integer和int的自动拆装箱机制(https://blog.csdn.net/wufaliang003/article/details/82347077)

# 装箱源码
int val = 10;
Integer i = Integer.valueof(10);

# 拆箱源码
Integer integerVal = 100;
int val = integerVal.intValue();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java基础题系列(1 - 10) 的相关文章

  • 工作量证明如何拦截97.42%异常机器流量?

    近期休闲小游戏 羊了个羊 火爆朋友圈 这款第二关难度系数极高且带有省份和个人排名的小程序游戏甚至在最高峰时段热度指数超过了和平精英和英雄联盟 但不管是MOBA手游英雄联盟还是休闲小游戏羊了个羊 在繁荣的背后游戏外挂脚本屡见不鲜 羊了个羊游戏
  • selenium入门教程

    目录 1 安装selenium 2 安装浏览器驱动 3 添加浏览器扩展selenium ide 录制操作流程 4 导出python文件 调整脚本 运行脚本 1 安装selenium 使用python自带的包管理器pip工具就可以下载sele
  • 剑指Offer第21题(包含min函数的栈)

    本博客旨在个人总结回顾 题目描述 定义栈的数据结构 请在改类型中实现一个能够得到栈的最小元素的min函数 在改栈中 调用min push及pop的时间复杂度都是O 1 解题思路 当题目思路不清晰时可使用画图或表格来模拟步骤 并慢慢发现其中的
  • 单片机不支持printf 浮点类型的解决办法

    在一些单片机中因为资源受限官方提供的SDK中通常不提供浮点类型数据的打印 如需浮点打印功能可以参考如下做法 前提条件 1 串口通信正常 2 printf 函数已经移植完成 操作方法 1 添加以下函数到工程 以下函数的作用为将一个float类
  • 实现一台电脑登录多个微信账号/一个微信账号在多台电脑登录

    一 一台电脑登录多个微信账号 在电脑桌面建立一个txt文档文件 输入内容 echo off start d C Program Files Tencent WeChat WeChat exe start d C Program Files
  • 鸿星尔克的对话

    夏季 炎热 每一次水灾都是见证人心 见证中国 奇迹的时候 太多太多感触东西 生在这样国度 倍感荣幸 鸿星尔克 火 天上掉下来的馅饼被一个真诚企业接住 应该值得庆幸 但是不是所有人都能接着住的 理性消费 为消费者 不要因为我们 给同行造成困扰
  • pytorch+transformer:简单的时序信号监测

    这里是厂妹 今天整个小课题试试看 上次那个机械臂因为专利问题暂时下架 等专利出来了再发布 话不多说 这次就直接开始吧 1 概述与思路详解 这又是放在一个硬件上面搭配的算法 放在可变换姿态的硬件上 判断当前倾角姿态和硬件姿态的关系 可能融合一
  • 2022年度编程语言排行榜来啦,它凭什么能超过C语言,排名第一?

    IEEE Spectrum 发布了 2023 年度编程语言排行榜 其中 Python 在总榜单以及其他几个分榜单中依然牢牢占据第一名的位置 另外值得关注的是微软 C 语言 它的排行从 2022 年的第 23 名跃升至了今年的第 6 名 称得
  • proxmox-(一)维护小工具

    一常用维护工具 1 1 任务卡主了 后台强制关机 找到对应虚机锁文件 直接删除该锁文件 然后后台执行命令 关机 比如 101虚机 前台执行的关机task 一直在运行 root procompute01 ps ef grep task roo
  • Java 数据结构与算法 栈和队列

    在生活中 我们常常遇到这样的情景 1 某人在学校发书的时候 如果要拿出最上面的书来看 那么直接拿出来就可以了 但是如果想要拿出中间某个位置的书来看 必须要挪开它上面压的书 才能看到这本书 这个时候 就是只能最上面的先拿出来 最下面的后拿出来
  • Numpy 的文件存储.npy和.npz 区别

    Numpy能读写磁盘上的文本数据和二进制数据 提供了多种存取数组内容的文件操作函数 保存数组数据的文件可以是二进制格式或者文本格式 1 将数组以二进制格式保存到磁盘 npy格式 np load 和 np save 是读写磁盘数组数据的两个主
  • 【操作系统实验】Ubuntu Linux 虚拟机文件查找相关命令

    文章目录 whereis help man find locate grep wc 管道 whereis 功能描述 寻找命令的二进制文件 同时也会找到其帮助文件 主要功能是寻找一个命令所在的位置 和find相比 whereis查找的速度非常
  • Linux下安装Jupyter并配置多个ipykernel

    安装Jupyter pip3 install jupyter notebook 或者 pip install i https pypi douban com simple jupyter 生成配置文件 jupyter notebook ge

随机推荐

  • Qt开源库-工具选项卡-【TabToolBar】

    一 序言 对于Windows 的文件管理器的菜单栏 设计得很漂亮 如下图所示 本文分享一个用于开发类似于Windows 文件管理器菜单栏的Qt开源库 TabToolBar 开源项目URL https github com SeriousAl
  • idea创建Gradle项目

    Gradle是什么 Gradle是一种以Groovy语言为基础的自动化构建工具 自动化构建本质上也是一种程序 我们开始编译时就启动这个程序 然后读取我们在 gradle 文件中配置的参数来实例化各个类 然后按照顺序依次执行对应的任务即可完成
  • CSS样式大全(网络收集整理)

    CSS样式大全 网络收集整理 字体属性 font 大小 font size x large 特大 xx small 极小 一般中文用不到 只要用数值就可以 单位 PX PD 样式 font style oblique 偏斜体 italic
  • MyBatis动态拼接sql,statementType="STATEMENT"使用

    背景 写一个需求 展示数据的结果需要将查询出来的结果列转行 但是发现需要列转行的数据是动态的 没办法确定有多少个 所以需要动态的拼接sql处理 起初设想是在MyBatis里面去动态拼接 然后尝试多次放弃了 要动态拼接的sql如下 下面是静态
  • [转]QNX-Momentics-IDE开发环境设置-功能调试

    如果你认为本系列文章对你有所帮助 请大家有钱的捧个钱场 点击此处赞助 赞助额0 1元起步 多少随意 声明 本文只用于个人学习交流 若不慎造成侵权 请及时联系我 立即予以改正 锋影 email 174176320 qq com 一 QNX M
  • CMake中引用Boost库

    CMake中引用Boost库 文章目录 概述 CMakeLists txt编写 find package 搜索路径设置 用例 Boost动态库链接 Boost头文件库链接 概述 在Linux开发时常常使用Boost库 若项目使用CMake进
  • 汇通达港交所上市:市值超240亿港元 阿里与顺为是股东

    雷递网 雷建平 2月18日报道 汇通达网络股份有限公司 简称 汇通达 股票代码为 09878 今日在港交所上市 汇通达此次引入6家基石投资者 包括创维 商汤 景林 金螳螂建筑 Windfall 海澜集团 设有6个月禁售期 上述基石投资者一共
  • 热点|ChatGPT到底是什么,ChatGPT给通信行业带来什么影响

    最近这段时间 ChatGPT火爆全网 引发了整个社会的强烈关注 这个来自OpenAI公司的聊天机器人 表现出了极为逆天的人工智能水平 让所有人为之震惊 其实 对人工智能 以下简称 AI 的能力 人类是有心理准备的 数十年来 我们观看的很多影
  • 简单的CSS案例——新闻介绍

  • C++删除文件

    使用remove函数删除本地文件 头文件 include
  • C++类模板实例化与专门化

    12 8 C 类模板实例化与专门化 12 8 1 隐式实例化 编译器只有在生成模板对象的时候才会生成模板类的实例化类定义 然后根据实例化类生成对象 12 8 2 显式实例化 12 8 2 1 定义 使用关键字template并指定类型的语句
  • unsigned char 类型数据似乎不能用作赋值

    unsigned char 类型的数据似乎不能用作赋值的量 起初我以为给unsigned char类型的数组赋值也要用unsigned char类型的变量才行 include
  • thinkphp的debug调试开启、关闭

    官方文档 https www kancloud cn manual thinkphp6 0 1037618 前言 强烈建议在开发阶段始终开启调试模式 直到正式部署后关闭调试模式 方便及时发现隐患问题和分析 解决问题 开启 如果你是通过 Co
  • 4月程序员薪资出炉,又又又拖后腿了?

    无论你等或不等 4月全国程序员就业薪资排行榜都已经来了 在这次的排行中 北京以18094元排行第一名 杭州 南京等新一线城市的排名表现不错 甚至超过一线城市广州 快来看看你拖城市后腿了没有 来源网络 如侵删 从城市排行中可以看到 现在程序员
  • CUDA Samples: Long Vector Add

    以下CUDA sample是分别用C 和CUDA实现的两个非常大的向量相加操作 并对其中使用到的CUDA函数进行了解说 各个文件内容如下 common hpp ifndef FBC CUDA TEST COMMON HPP define F
  • mybatis的一些特殊符号标识(大于,小于,等于,不等于)

    特殊字符 替代符号 红色基本为常用的 amp lt lt gt gt quot apos 小于等于 a lt b a lt b a b 大于等于 a gt b a gt b a b 不等于 a ba b a
  • 【allegro 17.4软件操作保姆级教程十一】表贴器件封装制作

    个人主页 highman110 作者简介 一名硬件工程师 持续学习 不断记录 保持思考 输出干货内容 目录 封装组成元素 焊盘类型 表贴器件封装制作 环境设置 计算坐标 放置pin脚 绘制丝印线 放置位号和value 放置1脚标识 放置其他
  • Linux QT GUI 界面程序打包 linuxdeployqt

    说明 1 主要依赖linuxdeployqt打包工具 2 打包Linux上的QT界面软件 使其不依赖QT开发环境 linuxdeployqt安装过程 不能下载官方编译好的 appimage文件 会报告gblic的问题 下载官方源码 修改ma
  • 【深度学习】真正的即插即用!盘点11种CNN网络设计中精巧通用的“小”插件...

    作者丨皮特潘 编辑丨极市平台 导读 所谓 插件 就是要能锦上添花 又容易植入 落地 即真正的即插即用 本文盘点的 插件 能够提升CNN平移 旋转 scale等变性能力或多尺度特征提取 感受野等能力 在很多SOTA网络中都会看到它们的影子 前
  • java基础题系列(1 - 10)

    说在前面 马上就要到秋招了 也从网上获取了一些java的基础面试题 总共有100多道 为了保持状态 每天回顾10道左右 如果result有不对的地方 希望各位大佬可以指正 谢谢 20200706 by 1z 请你说说java和php的区别