愿景:"让编程不再难学,让技术与生活更加有趣"
更多架构课程请访问 xdclass.net
目录
第1集 编程语言面试题之新版javase基础语法篇之运算符《上》
第2集 编程语言面试题之新版javase基础语法篇之运算符《下》
第4集 编程语言面试题之新版javase基础语法篇 try-catch-finally
第5集 编程语言面试题之新版JDK9基础语法篇 try-with-resource
第1集 编程语言面试题之新版javase基础语法篇之运算符《上》
简介:面试中 短路运算符 和 位运算
-
考点:计算机基础运算知识
-
难度【** *】
-
你知道 运算符 &和&&、|和||的区别吗?
& 按位与操作 只有对应的两个二进制数为1时,结果位才为1 1&1 = 1 1&0 = 0 0&1 = 0 0&0 = 0 | 按位或操作 有一个为1的时候,结果位就为1 1|1 = 1 1|0 = 1 0|1 = 1 0|0 = 0 & 和 && 都可以实现 和 这个功能 区别:& 两边都运算,而 && 先算 && 左侧,若左侧为false 那么右侧就不运算,判断语句中推荐使用 &&,效率更高 | 和 || 和上面类似 区别:||只要满足第一个条件,后面的条件就不再判断,而|要对所有的条件进行判断 把&&和||称之为短路运算符
-
用最有效率的方法计算2乘以8
原理:将一个数左移n位,相当于乘以2的n次方,位运算是CPU直接支持的,所以效率高
答案:2<<3
常见的JDK源码里面HashMap的默认容量16
int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16
直接是二进制操作了,表示1左移4位,变成10000,转为10进制也就是16, 直接以二进制形式去运行,效率更高
第2集 编程语言面试题之新版javase基础语法篇之运算符《下》
简介:讲解异或运算在面试中的考查点和分析
- 考点:计算机基础运算知识
- 难度【***】
-
写个方法,传递两个非0的int数值进去,实现变量交换的方式,有几种方式?
-
方式一
public static void swap(int a, int b){ System.out.printf("a=%d, b=%d",a,b); a = a + b; b = a - b ; a = a - b; System.out.printf("\na=%d, b=%d",a,b); }
-
方式二 异或运算 (一个数与另一个数异或两次是其本身, 一个数和自身异或结果是0 )
public static void swap2(int a, int b){ System.out.printf("a=%d, b=%d",a,b); a = a^b; // a1 = a^b b = b^a; // b = b^a^b a = a^b; // a = a1^b = a^b^a System.out.printf("\na=%d, b=%d",a,b); } 解释: a1=a^b b=b^a1=b^a^b=a //此时a1=a^b b=a a=a1^b=a^b^a=b
-
第3集 编程语言面试题之新版javase基础语法篇之类型
简介:java数据类型划分
-
考点:java基础类型的划分和运算
-
难度【**】
-
说下java数据类型分类
- 基础数据类型:byte、short、int、long、float、double、char、boolean
- 引用数据类型:其他都是引用类型
- String和Enum分别是什么类型:引用类型
-
运算
定义变量 int i = 5; return i++; 和 return ++i; 返回结果是什么
-
== 和equals的区别
- 基本数据类型比较 要用==判断是否相等
- 引用数据类型: ==比较的是内存地址是否一样,不同对象的内存地址不一样,equals比较的是具体的内容, 也可以让开发者去定义什么条件去判断两个对象是否一样
第4集 编程语言面试题之新版javase基础语法篇 try-catch-finally
简介:try-catch-finally异常处理模块的返回值问题
- 考点:编码规范和执行逻辑
- 难度【***】
- 下面代码 的try-catch-finally语句,try里面有个return, finally里面也有个return,结果会返回什么?为什么
public static int test1() {
int a = 1;
try {
System.out.println(a / 0);
a = 2;
} catch (ArithmeticException e) {
a = 3;
return a;
} finally {
a = 4;
}
return a;
}
public static int test2() {
int a = 1;
try {
System.out.println(a / 0);
a = 2;
} catch (ArithmeticException e) {
a = 3;
return a;
} finally {
a = 4;
return a;
}
}
答案:
在执行try、catch中的return之前一定会执行finally中的代码(如果finally存在),如果finally中有return语句,就会直接执行finally中的return方法,所以finally中的return语句一定会被执行的
执行流程:finally执行前的代码里面有包含return,则会先确定return返回值,然后再执行finally的代码,最后再执行return
小滴课堂 PS: 工作中项目如果这样写,猜会不会被打,不要这样写!!!
第5集 编程语言面试题之新版JDK9基础语法篇 try-with-resource
简介:新特性考察 try-with-resource 知识点
- 考点:编程基础和是否有学习新知识特性
- 难度【** **】
- 有了解新版的JDK处理IO流吗?编写下基础代码, 从一个txt文本里面,拷贝里面的内容到另外一个txt文本里面
JDK7之后的写法,JDK9⼜进⾏了改良,但是变化不⼤,记住下⾯的写法即可
需要关闭的资源只要实现了java.lang.AutoCloseable,就可以⾃动被关闭
try()⾥⾯可以定义多个资源,它们的关闭顺序是最后在try()定义的资源先关闭
try (
FileInputStream fis = new FileInputStream("/Users/xdclass/Desktop/test.txt");
BufferedInputStream bis = new BufferedInputStream(fis);
FileOutputStream fos = new FileOutputStream("/Users/xdclass/Desktop/copy.txt");
BufferedOutputStream bos = new BufferedOutputStream(fos);
) {
int size;
byte[] buf = new byte[1024];
while ((size = bis.read(buf)) != -1) {
bos.write(buf, 0, size);
}
} catch (Exception e) {
e.printStackTrace();
}
第6集 编程语言面试题之文件API和递归考察
简介:常见的文件API掌握,和递归算法的熟悉
- 考点: 文件API使用,简单递归逻辑代码编写、代码编写规范,简洁性
- 难度【** **】
- 代码编写需求: 找出某目录下的所有子目录以及子文件并打印到控制台上
public static void main(String[] args) {
//找出某目录下的所有子目录以及子文件并打印到控制台上
List<String> paths = new ArrayList<>();
getAllFilePaths(new File("/Users/xdclass/Desktop/小滴课堂-架构面试题教程/demo"),paths);
for(String path : paths){
System.out.println(path);
}
}
private static void getAllFilePaths(File filePath, List<String> paths) {
File[] files = filePath.listFiles();
if(files == null){
return;
}
for(File f : files){
if(f.isDirectory()){
paths.add(f.getPath());
getAllFilePaths(f,paths);
}else{
paths.add(f.getPath());
}
}
}
干货文档