小滴课堂-学习笔记:应聘大厂工程师/技术经理的你编程基础是否牢固《上》(大厂校招+社招必备)

56 篇文章 0 订阅
32 篇文章 1 订阅

logo 愿景:"让编程不再难学,让技术与生活更加有趣"


更多架构课程请访问 xdclass.net

目录

第1集 编程语言面试题之新版javase基础语法篇之运算符《上》

第2集 编程语言面试题之新版javase基础语法篇之运算符《下》

第3集 编程语言面试题之新版javase基础语法篇之类型

第4集 编程语言面试题之新版javase基础语法篇 try-catch-finally

第5集 编程语言面试题之新版JDK9基础语法篇 try-with-resource

第6集 编程语言面试题之文件API和递归考察

​干货文档


第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());
            }
        }
    }

​干货文档

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dev666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值