1. 请写出单例模式的两个实现
饿汉式
class Hungry{private Hungry(){}private static Hungry hungry = new Hungry();public static Hungry getInstance() {return hungry;}}
懒汉式
public class Lazy {private Lazy() {}private static volatile Lazy lazy; //volatile 防止指令重排public static Lazy getInstance() {if (lazy == null) {synchronized (Lazy.class) { // 双重校验保证线程安全,防止多线程进入初始化多个实例if(lazy == null) {lazy = new Lazy();}}}return lazy;}}
枚举式
public enum Singleton {INSTANCE;public void doSomething() { // 调用,方便简洁又安全System.out.println("doSomething");}}// 调用方法public class Main {public static void main(String[] args) {Singleton.INSTANCE.doSomething();}}
2. 给你一个字符串s(包含大写/小写字符),请你去除字符串中重复的字符,使得每个字母只出现一次,需保证返回结果按照ascii码的顺序展示。ps:A->65,a->97。
public String Solution(String s) {char[] c = s.toCharArray(); // 变char数组int count = 0; // 重复的字符数量int flag = 0; // 重复标记,重复置1// 去重for (int i=0; i < c.length - count; i++) {char temp; // 中间变量,用于复制c[i]去查重比较// 如果重复的数量比i还多,则i从0开始if(count > i && flag == 1) {i = 0;}else if (count <= i && flag == 1) {i = i - count;}temp = c[i];flag = 0;// 取第i个字符,后续遍历字符数组查看是否有重复,重复多个就去除多个// if判断是否相同,内层for遍历,将发生重复的位置之后的都往前移一位,实现去重for (int j = i+1; j < c.length - count; j++) {if(temp == c[j]) {for (int z = i; z < c.length - count -1; z++) {c[z] = c[z+1];}count++; // 重复数+1flag = 1; // 相同则置1break;}}}// 排序——字符排序默认就是按ascii码排序for (int i = 0; i < c.length - count; i++) {for (int j = 0; j < c.length - count -1; j++) {char temp;if(c[j] > c[j+1]) {temp = c[j];c[j] = c[j+1];c[j+1] = temp;}}}// 转为String并返回String str = c.toString();return str;}
3. 十进制转N进制
import java,util.Scanner;public class JinZhi() {public String fun(int n, int num) {String str = "";int yushu;int shang = num;while(shang > 0) {yushu = shang % n;shang = shang / n;// 如果进制>=10if (yushu > 9) {str = (char) ('a' + (yushu - 10)) + str;} else {str = yushu + str;}}return str;}public static void main(String args[]) {JinZhi s = new JinZhi();Scanner scanner = new Scanner(System.in);System.out.println("输入目标进制:");Int jinzhi = scanner.nextInt();System.out.println("输入待转换数字:");Int input = scanner.nextInt();scan.close();System.out.println(s.fun(jinzhi, input));}}
4. 笔试
Object类:notify、notifyAll、wait 不是Object类的:sleep
getClass:获取运行时类型
http2解决的问题: 传输层加速、服务端推送、防止窃取数据 未解决:节约流量
网段主机IP地址计算:
与10.110.12.29mask255.255.255.224属于同一网段的主机ip地址是()a。10.110.12.0b。10.110.12.32c。10.110.12.31d。10.110.12.30解答:1- 10.110.12.29 的网络地址为 10.110.12.02- 确认子网为 10.110.12.010.110.12.3210.110.12.64......3- 10.110.12.29位于0-32,属于子网 10.110.12.04- 而子网的网络地址为 10.110.12.05- 广播地址为 10.110.12.316- 网络地址和广播地址 不能 作为 主机地址7- D

重定向状态码(3xx) https://www.cnblogs.com/wuguanglin/p/redirect.html
301 Moved Permanently(永久移动) 场景:(一般是资源位置永久更改)
302 Found(发现) 场景:(一般是普通的重定向需求:临时跳转)
1.未登录前先使用302重定向到登录页面,登录成功后再跳回到原来请求的页面
2.有时候需要自动刷新页面,比如5秒后回到订单详细页面之类。
3.有时系统进行升级或者切换某些功能时,需要临时更换地址。
4.像微博之类的使用短域名,用户浏览后需要重定向到真实的地址之类。
5.电脑端与移动端的转换 比如我访问网页端页面https://www.taobao.com/,302重定向到了移动端页面m.taobao.com
303 See Other(查看其他) 场景:几乎没有,一般就是用302
307 Temporary Redirect(临时重定向) 场景:很少用,与302类似,只不过是针对POST方法的请求不允许更改方法
308 Permanent Redirect (永久重定向) 场景:很少用,与301类似,只不过是针对POST方法的请求不允许更改方法
数据库范式 1NF,2NF,3NF,BCNF,4NF,5NF。
符合高一级范式的设计,必定符合低一级范式,例如符合2NF的关系模式,必定符合1NF。
1NF的定义为:符合1NF的关系中的每个属性都不可再分。1NF是所有关系型数据库的最基本要求。
2NF在1NF的基础之上,消除了非主属性对于码的部分函数依赖。
3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖。
如何强制垃圾回收器立即回收一个对象?A.调用System.gc()方法B.调用Runtime.gc()方法C.将对象赋值nullD.无法强制垃圾回收器立即执行解答:没有方法可以强行回收垃圾,只能提高优先级system.gc可以提醒垃圾回收执行,不能强制。这个方法可以调用垃圾回收,但是具体值不值行,什么时间执行,由jvm调度
