Java面试题第一季
自增变量如下代码的运行结果:
123456789public static void main(String[] args) { int i = 1; i = i++; int j = i++; int k = i + ++i * i++; System.out.println("i=" + i); System.out.println("j=" + j); System.out.println("k=" + k); }
小结:
赋值=,最后计算
=右边的从左到右加载值依次压入操作数栈
实际先算哪个,看运算符优先级
自增、自减操作都是直接修改变量的值,不经过操作数栈
最后的赋值之前,临时结果也是存储在操作数栈中
单例设计模式什么是SingletonSingleton:在Java中即指单例设计模式,它是软件开发中最常用的设计模式之一。
单:唯一
例:实例
单例设 ...
Java面试题第二季
Volatilevolatile是Java虚拟机提供的轻量级的同步机制。
保证可见性
不保证原子性
禁止指令重排
保证可见性JMM(Java内存模型Java Memory Model,简称JMM)本身是一种抽象的概念,并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中的各个变量(包括实例字段、静态字段和构成数组对象的元素)的访问方式。
可见性
原子性
有序性
JMM关于同步的规定:
线程解锁前,必须把共享变量的值刷新回主内存
线程加锁前,必须读取主内存的最新值到自己的工作内存
加锁解锁是同一把锁
由于JVM运行程序的实体是线程,而每个线程创建时,JVM都会为其创建一个工作内存(有些地方称为栈空间),工作内存是每个线程的私有数据区域,而Java内存模型中规定所有变量都存储在主内存,主内存是共享内存区域,所有线程都可以访问,但线程对变量的操作(读取赋值)必须在工作内存中进行,首先要将变量从主内存拷贝到自己的工作内存空间,然后对变量进行操作,操作完成后再将变量写回主内存,不能直接操作主内存中的变量,各个线程中的工作内存中存储着主内存中的变量副本拷贝,因此不同的线程间 ...
实习-美团移动端开发面试
视频一面访问权限修饰符在Java中,访问权限修饰符指定了类、接口、方法、变量等成员的访问级别。Java中有四种访问权限修饰符:
public:可以被任何类访问,无访问限制。
protected:可以被同一包内的类以及其他包中的子类访问。
default(默认):如果没有指定访问权限修饰符,则默认为此。可以被同一包内的其他类访问。
private:只能被同一类中的其他成员访问,无法被其他类访问。
访问权限修饰符的使用可以帮助我们控制类成员的访问级别,从而提高代码的安全性和可维护性。
范型在Java中,泛型(Generics)是一种参数化类型的机制,它允许我们在定义类、接口和方法时使用类型参数,从而使得代码更加通用和类型安全。
使用泛型可以将数据类型的检查和转换从运行时提前到编译时,并且可以使代码更加简洁和可读。在使用泛型时,我们可以通过以下方式来定义类型参数:
在类或接口的名称后加上尖括号(<>),在尖括号中指定类型参数,如:class MyClass<T> { }。
在方法的返回类型前加上尖括号(<>),在尖括号中指定类型参 ...
实习-阿里菜鸟Java开发面试
电话一面怎么保证账户注册的安全注册账户的安全是保证用户信息安全的重要环节,以下是几个常见的保证注册账户安全的措施:
强密码策略:要求用户设置强密码,包括密码长度、密码复杂度、密码有效期等,并对密码进行加密存储。密码复杂度的要求可以包括大小写字母、数字、特殊字符等。
验证码:在注册账户的过程中,可以通过图形验证码或短信验证码等方式,验证用户的身份,防止机器人或恶意注册。
限制注册频率:限制同一IP地址或同一设备的注册频率,防止恶意注册。
邮箱或手机验证:要求用户提供有效的邮箱或手机,并对其进行验证,以确保用户的联系方式正确有效。
双因素认证:在登录或重要操作时,可以采用双因素认证,比如使用手机短信验证码或谷歌身份验证器等。
HTTPS协议:使用HTTPS协议进行数据传输,确保数据加密传输,避免数据被窃取或篡改。
安全审计:对用户注册行为进行安全审计,包括注册来源、注册行为等,及时发现异常行为,采取相应的安全措施。
安全漏洞扫描:对注册过程中的代码进行安全漏洞扫描,及时发现和修复安全漏洞。
除了上述措施,还需要建立完善的用户隐私保护机制,包括用户个人信息的收集、使用、存 ...
阿里菜鸟-后端-面试准备
数组和链表的区别
长度的初始化:数组在创建时就已经确定了长度,需要手动初始化;而链表则需要在创建时指定节点的数量,也可以在运行时动态增加节点。
内存占用:数组的内存占用是一个固定的大小,取决于数组元素的类型和长度;而链表的内存占用则是由节点的数量决定的,每个节点都需要分配内存。
访问速度:数组的访问速度比链表快,因为数组可以直接访问对应的元素;而链表则需要遍历整个链表才能访问到目标元素。
应用场景:数组通常用于需要连续存储元素的场景,例如数组元素是用户输入的数据,需要按照某种规则进行存储和排序;而链表则通常用于需要动态增加元素的场景,例如需要增加页面滚动条或者动态显示数据。
总之,数组和链表都有各自的优点和适用场景,需要根据具体的需求选择合适的数据结构。
集合接口继承Java 集合可分为 Collection 和 Map 两种体系。
Collection接口:
Set:元素无序、不可重复的集合 — 类似高中的“集合”
List:元素有序,可重复的集合 — “动态”数组
Map接口:具有映射关系“key-value对”的集合 — 类似于高中的“函数”
Collection接口继 ...
L02-课前测评
小红划数字题目小红拿到了一个正整数 n。对于任意大于 9 的数而言,她每次操作可以划掉这个数的一个数字,生成一个新的数。例如,对于正整数12345而言,小红经过一次操作可以生成1234、1235、1245、1345、2345这五种数字。小红想知道,自己最少操作多少次,可以把 n 变成一个偶数?
数据范围:
空间复杂度 :
时间复杂度:
输入描述
输出描述
示例1
示例2
示例3
代码12345678910111213141516171819202122import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;/** * @author liuwq * @create 2023-03-21 20:16 */public class main { public static void main(String[] args) throws IOException { BufferedReader br = new Buffere ...
L01-自学部分(算法学习小技巧)
基本语法回顾语句与字符串在c/c++/java中,一个语句一般是以分号结尾,而python中,语句之前由换行进行控制。
语句有以下几种:
表达式语句
a=3;
b/=2;
函数调用语句
printf("123"); a=Math.max(a,b); a=input().split('')
dfs1(1,-1);
控制语句
条件:if(a<b)....
循环:while(t--)....
转向:break;
复合语句
a=1,b=2;
1234while(x<3){ x++; printf(“%d\n”,&x);}
空语句
if(x>0);
需要注意的关键点:
所有符号一定要用半角符号(英文符号)!
=表赋值,==表相等
无论什么情况,所有括号必须匹配!(包括小括号中括号大括号)
不要丢失语句结尾的分号(除了选择和循环语句以外的所有语句)
顺序、选择、循环
顺序结构
语句1;
语句2;
选择结构
123if(判断条件) ...
十点云音乐
基础知识什么是小程序
2017 年度百度百科十大热词之一
微信小程序,简称小程序,英文名 Mini Program,是一种不需要下载安装即可使用的应用(张小龙对其的定义是无需安装,用完即走,实际上是需要安装的,只不过小程序的体积特别小,下载速度很快,用户感觉不到下载的过程)
小程序刚发布的时候要求压缩包的体积不能大于1M,,否则无法通过,在2017年4月做了改进,由原来的1M提升到 2M
2017年1月9日0点,万众瞩目的微信第一批小程序正式低调上线。
小程序的优点
同 App 进行互补,提供同 app 类型的功能,比 app 使用方便简洁
通过扫一扫或者在微信搜索即可下载
用户使用频率不高,但又不得不用的功能软件,目前看来小程序是首选
连接线上线下
开发门槛低, 成本低
小程序开发相关资料
官网:https://mp.weixin.qq.com/
微信开发工具
下载地址:https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html?t=2018315
注册小程序账号https://developers.weix ...
Redis6详解
NoSQL数据库技术发展技术的分类
解决功能性的问题:Java、Jsp、RDBMS、Tomcat、HTML、Linux、JDBC、SVN
解决扩展性的问题:Struts、Spring、SpringMVC、Hibernate、Mybatis
解决性能的问题:NoSQL、Java线程、Hadoop、Nginx、MQ、ElasticSearch
Web1.0 时代Web1.0的时代,数据访问量很有限,用一夫当关的高性能的单点服务器可以解决大部分问题。
Web2.0 时代随着Web2.0的时代的到来,用户访问量大幅度提升,同时产生了大量的用户数据。加上后来的智能移动设备的普及,所有的互联网平台都面临了巨大的性能挑战。
解决CPU及内存压力
解决IO压力
NoSQL数据库概述NoSQL(NoSQL = Not Only SQL),意即“不仅仅是SQL”,泛指非关系型的数据库。
NoSQL不依赖业务逻辑方式存储,而以简单的key-value模式存储。因此大大的增加了数据库的扩展能力。
不遵循SQL标准
不支持ACID
远超于SQL的性能
适用场景
对数据高并发的读写
海量 ...