1、char能存储中文汉字吗?

可以。java中,只要是一个字符,不管是数字还是英文还是汉字,都占2个字节。java中char的编码是UTF-16BE。

unicode和utf-8、gbk是什么关系?

unicode是字符集,uff-8、gbk是具体编码格式。

2、普通方法名可以和类名一样吗?

可以。静态方法、非静态方法都行。方法名随便定义。

3、redis应用场景有哪些?举出具体事例

4、es是怎么用的?具体事例

5、重写能改变返回类型吗?异常情况如何?

重写不能修改返回类型。重写方法抛出的异常要比父方法抛出的异常小,甚至不抛都行。应该这样考虑:父类方法抛的异常要把所有子类抛的异常概括掉,面向接口编程时,我们只会调用接口的方法,也就是父方法,如果父方法抛的异常不能把子方法盖住,那么运行时可能会抛出意想不到的异常,只能去catch Exception,显然不是这样的。

6、重载除了方法名一样外,其他都可以不一样吗?

是的。重载只要求两点:第一、方法名相同,第二、参数列表不同,其他无所谓,一样就一样,不一样就不一样。

7、128、-128的==比较,127、-127的==比较。蒙对了,不知道原理。

    public static void main(String[] args) {
Integer i1 = 128;
Integer i2 = 128;
Integer i3 = -128;
Integer i4 = -128;
System.out.println(i1 == i2);
System.out.println(i3 == i4);
}

包装类型赋值为原始类型,会有一个调用包装类型的valueOf()方法的装箱操作。Integer.valueOf()内部实现如下:

    public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}

Integer有一个内部类IntegerCache。IntegerCache有一个int类型的常量low,值是-128,有一个int类型的常量high,值是127,有一个Integer数组常量cache,cache长度是high - low + 1,即256。数组元素是Integer对象,值依次是从-128到127。

valueOf()方法首先会判断入参值,如果入参值在[-128, 127]的范围内,则返回cache指定索引处的对象,否则新生成一个Integer对象。

如上,因为128不在[-128, 127]的范围内,所以i1、i2都是一个新生成的Integer实例,所以i1==i2返回false。而-128在[-128, 127]的范围内,所以i3、i4都是Integer.IntegerCache的cache数组的指定位置的Integer实例,i3==i4返回true。

装箱操作,其实就是调用包装类的valueOf()静态方法。拆箱操作,其实就是调用包装类实例的xxxValue()方法。

再扩展一点,除了int对应的包装类型,其他原始类型对应的包装类型有这种情况吗,换句话说,valueOf方法会从内部的包装类数组中返回值吗?

布尔型,Boolean的valueOf

    public static Boolean valueOf(boolean b) {
return (b ? TRUE : FALSE);
}

TRUE是Boolean类型的常量,值为new Boolean(true)。FALSE是Boolean类型的常量,值为new Boolean(false)。所以多次调用Boolean.valueOf(true)返回的是同一个Boolean实例,多次调用Boolean.valueOf(false)返回的也是同一个Boolean实例。

字符型,Character的valueOf

    public static Character valueOf(char c) {
if (c <= 127) { // must cache
return CharacterCache.cache[(int)c];
}
return new Character(c);
}

可以看出,当char入参小于等于127的时候,多次调用valueOf方法返回的是同一个Character实例。

数字型:

Byte的valueOf

    public static Byte valueOf(byte b) {
final int offset = 128;
return ByteCache.cache[(int)b + offset];
}

可以看出,当byte入参相同时,多次调用valueOf方法返回的是同一个Byte实例。

Short的valueOf

    public static Short valueOf(short s) {
final int offset = 128;
int sAsInt = s;
if (sAsInt >= -128 && sAsInt <= 127) { // must cache
return ShortCache.cache[sAsInt + offset];
}
return new Short(s);
}

可以看出,当short入参在[-128, 127]范围内时,多次调用valueOf方法返回的是同一个Short实例,否则每次调用都生成一个新的Short实例。

Long的valueOf

    public static Long valueOf(long l) {
final int offset = 128;
if (l >= -128 && l <= 127) { // will cache
return LongCache.cache[(int)l + offset];
}
return new Long(l);
}

可以看出,当long入参在[-128, 127]范围内时,多次调用valueOf方法返回的是同一个Long实例,否则每次调用都生成一个新的Long实例。

Float的valueOf

    public static Float valueOf(float f) {
return new Float(f);
}

Float的valueOf方法每次都会返回一个新的Float实例。

    public static Double valueOf(double d) {
return new Double(d);
}

Double的valueOf方法每次都会返回一个新的Double实例。

总结一下就是:

整数型包装类,入参在[-128, 127]范围的话,多次调用valueOf方法会返回同一个对应类型实例,否则每次会返回一个新的实例。

char包装类,入参<=127的话,多次调用valueOf方法会返回同一个Character实例,否则每次回返回一个新的Character实例。

boolean包装类,入参相同的话,多次调用valueOf方法会返回同一个Boolean实例。

浮点数包装类,每次调用valueOf方法都会返回一个新的对应类型实例。

8、accept在三次握手的哪个阶段。自己答错了,说是第二阶段。

9、osi七层模型及常用协议。自己答错了,说ip是网络层和数据传输层协议。

七层从高到低,依次是应用层、表示层、会话层、传输层、网络层、数据链路层、物理层,这七层应该像背化学元素周期表一样背下来。

http是应用层协议,应用层协议除了http外,还有ftp协议、telnet协议等。

tcp/udp是传输层协议。

ip是网络层协议。

10、 对称加密有DES、AES,非对称加密有RSA、DSA、ECC。

11、base64。

12、Object类的方法有哪些?自己答错了。说clone方法、finalize方法不是。

clone()、finalize()是Object的方法,访问修饰符是protected。

二面 三个面试官

1、REST

REST不是一个单词,而是多个单词的缩写,全称是Representational State Transfer,中文意思是表现层状态转移

用URL定位资源,用HTTP动词(GET、POST、PUT、DELETE等)描述操作。

看url就知道要什么,看http method就知道要干什么,看http status code就知道结果如何。

2、ES的特性

多线程synchronized用例解析的更多相关文章

  1. Java 多线程 —— synchronized关键字

    java 多线程 目录: Java 多线程——基础知识 Java 多线程 —— synchronized关键字 java 多线程——一个定时调度的例子 java 多线程——quartz 定时调度的例子 ...

  2. JAVA之旅(十四)——静态同步函数的锁是class对象,多线程的单例设计模式,死锁,线程中的通讯以及通讯所带来的安全隐患,等待唤醒机制

    JAVA之旅(十四)--静态同步函数的锁是class对象,多线程的单例设计模式,死锁,线程中的通讯以及通讯所带来的安全隐患,等待唤醒机制 JAVA之旅,一路有你,加油! 一.静态同步函数的锁是clas ...

  3. Java并发之synchronized关键字深度解析(二)

    前言 本文继续[Java并发之synchronized关键字深度解析(一)]一文而来,着重介绍synchronized几种锁的特性. 一.对象头结构及锁状态标识 synchronized关键字是如何实 ...

  4. python--selenium多线程执行用例实例/执行多个用例

    python--selenium多线程执行用例实例/执行多个用例 我们在做selenium测试的时候呢,经常会碰到一些需要执行多个用例的情况,也就是多线 程执行py程序,我们前面讲过单个的py用例怎么 ...

  5. 多线程-synchronized锁

    package 多线程.synchronized锁; /*. * * * * */ public class Sale implements Runnable { ; @Override public ...

  6. Python-Unittest多线程执行用例

    前言 假设执行一条脚本(.py)用例一分钟,那么100个脚本需要100分钟,当你的用例达到一千条时需要1000分钟,也就是16个多小时... 那么如何并行运行多个.py的脚本,节省时间呢?这就用到多线 ...

  7. 从零开始实现lmax-Disruptor队列(四)多线程生产者MultiProducerSequencer原理解析

    MyDisruptor V4版本介绍 在v3版本的MyDisruptor实现多线程消费者后.按照计划,v4版本的MyDisruptor需要支持线程安全的多线程生产者功能. 由于该文属于系列博客的一部分 ...

  8. Java对象锁和类锁全面解析(多线程synchronized关键字)

    最近工作有用到一些多线程的东西,之前吧,有用到synchronized同步块,不过是别人怎么用就跟着用,并没有搞清楚锁的概念.最近也是遇到一些问题,不搞清楚锁的概念,很容易碰壁,甚至有些时候自己连用没 ...

  9. java线程同步以及对象锁和类锁解析(多线程synchronized关键字)

    一.关于线程安全 1.是什么决定的线程安全问题? 线程安全问题基本是由全局变量及静态变量引起的. 若每个线程中对全局变量.静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的:若有多个线 ...

随机推荐

  1. [ An Ac a Day ^_^ ] [kuangbin带你飞]专题五 并查集 POJ 2236 Wireless Network

    题意: 一次地震震坏了所有网点 现在开始修复它们 有N个点 距离为d的网点可以进行通信 O p   代表p点已经修复 S p q 代表询问p q之间是否能够通信 思路: 基础并查集 每次修复一个点重新 ...

  2. Java Swing 记事本代码

    记事本代码分为4个部分: 1.顶部点击可展开的菜单如何生成?2.当点击了顶部菜单的某一个子菜单,在程序中如何判断点击了哪个子菜单?[正在写]3.那个供你输入文字并且可以滚动的文本框如何生成?4.点击了 ...

  3. fidder https以及Fiddler抓取HTTPS协议

    一.浅谈HTTPS 我们都知道HTTP并非是安全传输,在HTTPS基础上使用SSL协议进行加密构成的HTTPS协议是相对安全的.目前越来越多的企业选择使用HTTPS协议与用户进行通信,如百度.谷歌等. ...

  4. 使用JS通过正则限制input的输入

    第一: 限制只能是整数 type = "text" name= "number" id = 'number' onkeyup= "if(! /^d+$ ...

  5. if和switch的原理

    在C语言中,if和switch是条件分支的重要组成部分.if的功能是计算判断条件的值,根据返回的值的不同来决定跳转到哪个部分.值为真则跳转到if语句块中,否则跳过if语句块.下面来分析一个简单的if实 ...

  6. SublimeLinter 3中使用jshint

    这货得知已久,在sublime2时期对着教程按部就班的凑合用着...不明所以. 今天无意发现SublimeLinter终于出3了,果断装之,鼓捣1个多小时,磕磕绊绊终于成功工作了.期间看了无数英文文档 ...

  7. MITMF

    一. 安装 项目地址:https://github.com/byt3bl33d3r/MITMf 需要自行手动安装python-nfqueue,pefile模块 sudo apt-get install ...

  8. Kali Rolling 下利用rtl-sdr跟踪飞机路线

    环境 kali rolling 状态:未升级发行版,仅用 "apt-get upgrade " 命令更新了软件 原料 RTL-SDR电视棒一个,芯片是RTL2832U 原理 我国民 ...

  9. notepad 是doc 调出记事本文件

    notepad 是doc 调出记事本文件notepad 是doc 调出记事本文件notepad 是doc 调出记事本文件

  10. Effective JavaScript :第一章

    第一章 一.严格模式与非严格模式 1.在程序中启用严格模式的方式是在程序的最开始增加一个特定的字符串字面量: ‘use strict’ 同样可以在函数体的开始处加入这句指令以启用该函数的严格模式. f ...