面试经历 | 阿里云Java开发 2021.10

面试岗位

Java开发工程师(校招)

笔试

没有笔试,人在家中躺,面试天上来。来了个面试官打电话问有时间面试吗,我说有,然后立刻开始了电话面试。

一面

  1. 项目中后端 Django,为什么后来修改为了 Java

  2. 项目中为什么用了 K8S,好处有什么?

  3. Java 的数据类型有哪些?
    答:byteshortintlongfloatdoublecharboolean

  4. MySQL 中,有一个联合索引 (A,B,C),如果查 (A,C) 会走索引吗?
    答:会走 A,但是不会走 C,因为 B+ 树是先按 A 排序,再按 B 排序,再按 C 排序。

  5. 三个线程分别输出 1-10,11-20 和 21-30,如何实现?
    答:这里我直接把我知道的方法都说了一通,主要参考以下两个题解:
    《1117.H2O生成》以及《1116.打印0和奇偶数》

  6. 场景题,说要提供一个查询天气的服务,但是每次去查询是要收费的,问你大概会考虑哪些因素?
    答:首先是查询操作一定是放在服务器的,用户行为只能查到缓存内容;
    二是查询是懒汉式,即对于频繁查询,我们定时去查询,对于稀疏查询,我们可以等有人查询了再做查询;
    三是得搞个 IP 池,防止频繁搜索被 ban。延伸出来的可能还有爬虫爬取时的一些考虑了,比方说爬取速度,是否可以只爬取某些字段,需不需要登录,用不用集成验证码识别等

  7. 此时面试官问我有电脑在手头不,然后开始搞上机题。

7.1 给了以下代码问错误是什么:

public void search(List arr){
    String myname = "MyName";
    try{
      for(int i = 0; i < arr.size();){
          if(arr.get(i).name == myname){
              arr.remove(i);
          }
          else{
              i++;
          }
      }
  } catch(Exception e){
      System.out.println("exception");
  } catch(ArrayIndexOutOfBoundsException ex){
      System.out.println("OutOfBounds exception");
  }
}

答:这里我看了半天那个 for 循环,但实际上不存在异常访问;代码的错误在下面的 catch 中,Exception 是基类,不可能走到 ArrayIndexOutOfBoundsException

7.2 大数据流中找第 k 大数。
答:优先队列

二面

  1. 项目大概说说。

  2. 项目的稳定性考虑过吗?

  3. 项目有做分布式处理吗?

  4. 项目总周期是什么?你是怎么分配工作时长的?

  5. 项目的技术栈如何选择的,遇到问题了怎么解决?

  6. 为什么引入了 Docker,作用是啥?

  7. 微服务了解过吗?

  8. 看你还做过 Android 项目,有遇到什么难点吗?

  9. 了解过 Android 图像传输的问题吗,比如传输效率,如果图片特别大怎么办?
    答:我当时前后端用的就是简单的以文件形式的通讯,如果现在让我想的话,我可能会把图片解析成三通道,这样全都是以数据流形式传输,到了服务器再做拼接。

  10. 说的不错,那你知道 http 其实用的就是这样的多通道形式传输吗?知道他的实现方法吗?
    答:不知道

  11. IOCAOP 解释一下
    答:面向切面编程,把一些和核心功能无关的又必不可少重复性高的工作,做成函数,放到核心功能前后,相当于把原有的功能做了一个包装。
    原先我们在某个类中需要另一个类的时候,需要手动 new 一个新对象,而控制反转则是通过 BeanbyTypebyName 之类的方式,将类之间的依赖关系交给 Spring 来完成,由他来创造新的对象,并赋予对象之间相互关系。

  12. Bean 生命周期了解过吗?
    答:首先用类的无参构造方法(或指定的有参构造方法)创建一个对象,但此时对象里面还没有内容,我们还需要根据 Autowired 等标签做依赖注入,然后初始化前(PostConstruct),初始化中(InitializingBean),以及初始化后(AOP),最后得到一个动态代理的 Bean 对象。然后使用,最终销毁。

三面

  1. 学习成绩 / 奖学金 / 实习 / 奖项 / 竞赛
    答:一无所有赵二狗

  2. 你如何学习新技术?
    答:项目驱动,我的个人项目是 ① Django 后台 + HTML+CSS+JS 前端; ② Django 后台 + Android 前端人机交互; ③ (Django) + Java + K8S + SpringBoot + VUE。可以看到呈现一个不断复杂的过程,我认为学习就是在原有基础上增加新的模块和功能。

  3. 那你这个都是学校项目学习,太浅了。为什么不找个实习
    答:……

HR面

三面没通过,但既然在写阿里面试经历,补一个暑期实习的面试经历好了。
当时是三面过了,到 HR 面。对方提前 15 分钟来电话:

  1. 一会有个会,可以提前开始吗?
    答:可以,开始自我介绍

  2. 你觉得自己有什么优点?
    答:乐观,相关接触面较广,恰好能贴合招聘要求

  3. 你觉得自己有什么不足?
    答:没啥领导能力,不擅长分配工作

  4. 还有什么要说的吗?
    答:?这就要结束了?

然后最终我暑期实习挂在了 HR 面,每当有人问起我暑期为什么不找个实习,我都只能回复 “找了,但可能找的有点晚了,没有 hc 了”。

感受

一开始挺好,觉得问的聊得都挺不错,但是技术三面不问技术这个确实给我伤到了,也是这场面试让我觉得还是得投一下实习,不能老闷头在实验室搬砖了。

你可能感兴趣的:(面试经历 | 阿里云Java开发 2021.10)