Android技术知识Android开发Android进阶之路

你可能需要这份大厂面经

2020-08-30  本文已影响0人  JasonGaoH

今年小红书这边发完年终奖之后,心里隐隐觉得要出去看看机会,因为在小红书这边已经呆了快三年了,对于一些技术,业务总觉得有点麻木了,内心里总觉得自己啥都会了,但是很多只是知道个皮毛。

有句话是这么说的,一个人在一个地方待久了,内心里以为他所处的这个环境就是全世界,所以想着做些改变,不管结果如何,至少让自己走出舒适区,同时也想着能去大厂看看。

其实大家也不能特别迷信大厂,认为加入大厂就没有后顾之忧了,只能说目前对我现在这个阶段来说,加入大厂刷一下自己的大厂背景这个对于自己当下来说还是有益的。

一开始也是不确定到底要不要出去看机会,一个是因为疫情,另一个是内心里总觉得没有准备好,其实很多事情在你开始行动的时候就没有那么多顾虑了,就像很多人在学生时代考试时一样,永远都会觉得自己没有复习好,但勇敢地迈出第一步,后面基本就没啥可恐惧的了。

自己这段时间主要就面试了三家公司吧,字节,腾讯和阿里,但经历的面试场次感觉有十来场了,有的对应的是同一公司的不同业务吧,字节面的两个业务部门都失败了,腾讯那边QQ音乐团队给了Offer,阿里这边也给了Offer,说实话,面试还是蛮累的,于是后面其他的公司也没有再尝试了。

字节

最开始面试的是字节在上海这边的在线教育部门,这算是自己今年的第一次面试吧。

由于当时是处于一个基本没有啥准备的状态下面试的,最早是由于之前同事海哥帮忙内推的,我一开始的时候也是有点没想好是不是要面试,但因为海哥说了几次,索性我就面面看看吧,因为自己这个时间点基本是没有怎么准备,所以面试答的不怎么好,另外就是字节对于算法比较看重,我当时算法题没些出来,所以这一面基本就没有后续了。

这次主要问了以下几个问题,都是我面试完通过记忆记录下来的。

首先是自我介绍吧,介绍之前的一些经历和项目

这次面试没有后续之后,后来字节这边有个安全的团队也说是要和我聊聊,这次面试的时间是在周六,当时一共进行了两场面试,为什么是安全团队呢,因为他们看我的简历发现我是信息安全毕业的,但是说句实话,学校里学的那些关于信息安全相关的知识离工程实践还是有点远的,所以这次面试我基本上都是全程懵逼状态。

下面列举的是这次面试的一些问题:

字节这边后面还面过抖音的上海部门,这会已经是后面了,因为这时基本已经拿到腾讯的Offer了,阿里这边也还在面试流程中,所以就想着面面看看情况,这次是一个之前的同事的同事帮忙内推的,这里同样列举下问的问题:

相对来说,我觉得抖音的这次面试有些问题问的还是比较有难度的,加上我后面给了个算法题也还是没能写出来。所以基本上后续也没有消息了,唉,感觉自己还是太菜了。字节每一轮面试都会问一个算法,对于算法的考察应该算是大厂里面比较严格的。

腾讯

后面有个猎头说是微信那边要招人,说是机会不错,于是我决定试试。当时想着就当增加增加面试经历吧。

后面猎头推荐后,广州那边有个人打电话过来说是要进行电话面试。我当时其实关于算法这一块还是没怎么复习,于是这次微信的面试直接上来就是笔试,我记得是5道算法题,还有一个关于多线程的编程问题,要求45分钟内完成。

大概的题目如下:

题目1(算法):给出n(n>=1),请把1,2,...,n,最小分成m组,使得每组内的数字都互质,求m值。例如n=7,可最小划分成3组,{1, 2, 3}, {4, 5}, {6, 7}

int findmin(int n) {
  // TODO
}

题目2(算法):给定一个递增循环整数数组,从里面找出最小的元素,使用的算法越快越好。特别地,最小的元素可能出现在数组中间。比如:50, 52, 63, 90, 3, 8, 15, 44。

class Problem2 {
  int findmin(int[] arr) {
    //TODO
  }
}

题目3(算法):在二叉排序树上面找出第3大的节点。注意:不能把二叉树全量存储到另外的存储空间,比如存储到数组中,然后取出数组的第三个元素。

class TreeNode {
    int value;
    TreeNode left, right;
};

class Problem3 {
  TreeNode find(TreeNode root) {
    // TODO 请完成实现部分
  }
}

题目4(语法):用Java语言实现System#arraycopy数组拷贝,注意:不能直接使用System.arraycopy

class Problem4 {
  public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) {
    // TODO 请完成实现部分
  }
}

题目5(多线程):阅读下面代码,在2线程环境下,设计一个方案,判断无限数据流(Stream)每个正整数是否素数,越快越好

interface Stream {
  long get(); // 获取下一个需判断的整数
  void put(boolean result); // 返回整数是否素数的结果
  static boolean isPrimeNumber(long num) { // 判断一个整数是否素数
    if (num < 2) return false;
    for (long i = 2, s = (long) Math.sqrt(num); i <= s; i++) {
      if (num % i == 0) return false;
    }
    return true;
  }
  static Stream getInstance() {
    try {
      return (Stream) Class.forName("StreamImpl").newInstance(); // 运行环境保证不会异常
    } catch (Exception e) {
      return null;
    }
  }
}
//比如:Stream={1,2,3,4,...}, Result={false,true,true,false,...},注意输出顺序。
public class Problem {
  private Stream stream = Stream.getInstance();
  public static void main(String[] args) {
    Problem instance = new Problem();
    new Thread(() -> {
      while (true) {
        try {
          instance.thread1();
        } catch (InterruptedException e) {

        }
      }
    }, "thread1").start();
    new Thread(() -> {
      while (true) {
        try {
          instance.thread2();
        } catch (InterruptedException e) {

        }
      }
    }, "thread2").start();
  }
  public void thread1() throws InterruptedException {
    // TODO 请完成实现部分
  }
  public void thread2() throws InterruptedException {
    // TODO 请完成实现部分
  }
}

因为之前没准备,我当时连二叉搜索树是有序的这个概念都忘了,把二叉搜索树当做普通的二叉树去处理了,感觉当时在45分钟过后,面试官操着一口广东味的普通话来我和沟通的时候,让我当时有种直接挂断电话的冲动,总之,就感觉这次面试体验很不好,让我有种想去撞墙的冲动。

也是从这个时候开始,开始意识到要好好准备算法,不然真的是没有继续面下去的必要。

微信这边的面试基本没有后续了,答得这么差,有后续才怪咧。

后面我的简历应该是被收到腾讯的人才库里去了,于是有深圳那边的业务开始打电话给我说是要面试。

一开始是深圳的一个做SDK的部门,和我进行了一次腾讯会议的视频面试。这次基本就是聊技术,这个面试官对我的评价不错,主要聊了聊我在小红书做的一些东西和自己平时做的一些技术沉淀,然后问了一些Android相关的技术问题,觉得我的表现不错,但是因为他们是做SDK的,和我这边的经历不是特别匹配,面试官当时也直接说了可能不是特别匹配,但是他说会在面试反馈中给予我比较好的面试评价。

可能也是因为这个原因,后面我的简历又被腾讯的其他业务部门捞起来了。

首先是手机QQ团队,一面面试官问的都是一些Java和Android 基础问题,但是问的比较多,基本上各个知识点都问到了一些。

一面基本上问了下面一些问题:

二面答的问题基本没怎么答好,有的是自己不怎么涉及这些,有些则是对于某些理解不够深入。其实我觉得这次面试失败是因为这个几个问题没回答好,我能感觉到面试官有种不想继续聊下去的冲动了,后面则是象征性地出了一道算法题。

接着收到了QQ音乐的面试邀请,这次面了好几轮,一开始是那边的HR给我打了个电话,基本就是聊为啥换工作,能不能去深圳这样,以及在小红书的工作内容等等。

接着面了好几轮,两轮技术面,一轮交叉面,还有总经理面试,最后还有HR面,因为面的轮次比较多,当时对于面试题也没有特殊整理,不过大概问的问题都是这些东西,和之前的面试问题大差不差。

面到后来QQ音乐这边算是通过了,给的Offer还可以。

腾讯这边还面过腾讯视频的岗位,这个是在自己懒散的情况下进行的,因为基本确定要去哪了,当时就想着涨涨面试经验啥的。这次面试基本面试完之后我就觉得没有后续了。下面是问的一些问题:

算法题:输入[“eat”,”ate”,””tea”,”and”,”den”] 要求输出“换位词”,[[“eat”,”ate”,””tea”],[”and”],[”den”]]

阿里

阿里这边就让同事认识的一个阿里员工内推了阿里的岗位,这次面的是淘宝下面的一个业务。当时是在差不多拿到QQ音乐Offer的时候开始的,当时也没有想太多,反正就是想试试,因为当时想的是,拿不到这边的机会,就去深圳工作去。

阿里的面试一面问的基本都是业务相关的,基本就是讲自己在小红书做的东西和一些Android基础知识。这几次面试我也没有做什么面试题的记录。

二面上来也是问技术啥的,后来搞了三个笔试题,一个是排序问题,一个是用栈来模拟队列,还有一个是写一个小的商品feed流的demo,难度不是特别大,关于问的一些具体的面试题我也忘了,差不多都是那些东西吧。

最后一面是HR和Leader一起的终面,Leader应该是这个业务线的领导,没有问具体的技术问题,问的都是一些比较开放的问题,阿里的这次面试整体感觉还算顺利吧,后面就是算是通过了,给了Offer。

基本上,自己面试比较顺利的几次都没有记录下来。关于Offer的选择,腾讯相对阿里,杭州相对深圳,压力要小很多,所以决定去阿里,所以就拒了QQ音乐这边的机会,但是心里还是蛮喜欢这个工作岗位的。

总结

整体说来,这段时间的面试不能算是成功的,很多面试都没有通过,通过的还有运气成分在里面吧,这也提醒我自己要学习的东西还有好多吧,尤其自己在算法这一块还是比较薄弱的,对大多数人来说,算法题这块没有啥捷径吧,就是多刷题吧。

我记录这些希望能对面试的人有些帮助吧,因为之前很多人让我写面经啥的,我也不太清楚怎么写,就是把一些问题记录下来吧,如果你觉得有帮助,可以帮忙点赞分享下,感谢。

上一篇 下一篇

猜你喜欢

热点阅读