记录 Java 后端开发实习历程(面经)

大概从 4 月中旬开始投递简历,大多数都被拒绝了(真难內),只有几家中小厂给了面试机会,幸运的是在五月底被字节其他部分给捞起来了,3 轮面试成功拿下 offer,感觉非常幸运吧,感谢牛客,感谢字节...

此帖总结一下面试过程,因为都有记录,所以比较详细,回顾时才发现我面试时回答总是会莫名其妙重复一些话,然后不知道接下来该说啥,好尬,就一直 嗯,额,就是....由于是总结帖,因此可能会记录下我自己的回答。

趋势科技

4-19 官网投递。

4-22 笔试(AK)

  • 选择填空
  • 字符串处理,简单题
  • 编辑距离,高频题

笔试后 4-25 约面

4-29 一面(95min)

人生第一面,面了贼久,面的怀疑人生,趋势是做安全的,所以上来就是安全问题,被虐的比较,比较注重项目,我项目是一个 RPC 和一个小程序&&管理系统。

  1. 自我介绍
  2. 为什么大二就来实习,能实习多久?
  3. 小程序的登录是怎么做的,详细流程?
  4. 后台管理系统账号密码传输是明文吗?
    • 当然不是,回答用了 HTTPS 加密。
  5. HTTPS 一定能保证安全吗?
    • 额,我说可以,面试官没反馈...
  6. 除了 HTTPS 还有其他什么能够保证安全的协议吗?
    • 我说应用层好像没有了,然后就谈了谈 IPsec 协议,说了说新首部封装,MAC 尾部封装,隧道技术,然后说了说 VNP 的实现就是基于 IPsec。
    • 谈的比较浅,因为了解的也不多,好在面试官也没多问。
  7. 除了 IPSec 呢?还有什么协议能保障通信安全?
    • 卑微,不知道。
  8. 密码在数据库中是明文存储的吗?
    • 不是,加盐?
  9. 什么是加盐,为什么要加盐?
    • 早期使用散列加密相似的密码碰撞概率高,黑客破解了一个可能就能破解多个,因此加上随机盐值进行散列,降低碰撞,降低风险。
  10. 加盐后还能知道原始密码吗?
    • 不能,只能验证。
  11. 散列算法了解哪些?
    • MD5, ASH。
  12. MD5 原理知道吗?
    • 啥玩意?不知道,回来恶补了一下,现在(写此面经的时候)又给忘了...
  13. 两类密码体制。
    • 对称非对称
  14. 块密码原理了解吗?
    • 早期使用输入输出表,但表可能过大,因此使用函数与置乱函数作为替代。
  15. 流密码了解吗?
    • 不知道。
  16. 项目中 Redis 怎么用的,Redis 数据类型?Redis 持久化方式?
    • 终于结束安全问题了...
  17. 能解释下 Redis 为什么这么快吗?
    • 丰富、高效的数据结构。
    • 串行化的处理方式,避免线程切换开销。
    • IO 多路复用机制。
    • 6.0 之后引入多线程处理 IO 数据。
  18. 项目中 rabbitmq 怎么用的?
  19. mq 如何保障你项目中的一致性?
    • 手动 ack,确认和事务机制。
  20. mq 如何避免重复消费?
    • 两点原因导致,一是生产者投放多条重复消息,这个很好控制,另一个是消费者由于网络异常使得消费者与 mq 连接断开,这会导致 mq 会重新投放消息引起重复消费,我说可以用 redis 缓存唯一消息 id,面试官不满意,请问下还有啥解决办法啊?
  21. 消费者是怎么做模块区分的?
    • 不知道面试官想问啥,没理解,我说我项目是单机的...
  22. 项目是单机的?也就是说这个项目可以不要 mq?
    • 完蛋,魂淡啊,你还指望一个大一学生(项目是大一写的)写出啥高级的分布式微服务项目?
  23. 分页怎么做的?
    • 用 Limit 字句。
  24. 会有什么性能问题呢?
    • 然后给面试官扯了扯 limit 的优化?
  25. 用过分页插件吗?
    • 无......
  26. 用了 mybatis 是吧,启动流程是怎么样的呢?
    • 这里我不太了解,根据自己理解扯了扯扫描 xml 然后动态代理。
  27. 平时怎么学习 Java 的?
  28. 你项目中用到了 Java 中的哪些集合?介绍一下这些集合吧。
  29. List 讲讲吧,有几种实现呢?
  30. ArrayList 内部内存是连续的吗?
    • 我说使用数组,是连续的,面试官说不对再想想,然后想了想说数组本身是连续的,但是数组指向内容不一定是连续的。
  31. 谈谈你对 Java 中引用的理解。
    • 我说引用就是指针...
  32. 好,那你说说你对指针的理解。
  33. Java 和 C++ 你更喜欢哪个?
  34. 为什么说 Java 是跨平台的?
  35. 你项目里是如何做权限管理的?
    • 晕,怎么还问项目,SpringSecurity 做的。
  36. 写题,文件中记录了用户访问记录,用户可以多次访问,将他们按照访问次数排序,去重后重新写入文件。
    • 简单题,文件 API 忘记了,面试官让百度,然后就秒了。
  37. 反问。

面试官态度还是挺好的,还是自己太菜了吧,很多都不会...不过感觉经历了这一面(太尼玛久了),我的面试恐惧症降低了不少,这么久的面试都经历过了,其他的面试,哼~,这一面面完就没投了,重新做了个数据库项目丰富简历,隔了一个月再战。

面试完至今(6-16)流程还是处理中......(差评)

北京中科全安信息科技

5-25 智联招聘投递,当天约面,效率还是挺高的。

5-27 一面(25min)

面试官上来就介绍了部门业务。

  1. == 和 equals 区别。
  2. Java 中的集合介绍。
  3. HashMap 原理。
    • 这里我扯到了这是不安全的。
  4. ConcurrentHashMap 原理。
  5. Sync 锁升降机制。
  6. wait 和 notify 原理?
  7. redis 基本数据类型。
  8. Spring 的 IOC。
    • 这里我给他扯源码了,扯了五分钟喊停了。
  9. 工厂模式了解吗?
    • 简单工厂、工厂方法、抽象工厂,这里忘记抽象工厂名字了,还是面试官提示的...然后扯了扯设计原则,解耦的好处。
  10. 啥时候来,能实习多久,反问。

总的而言问的比较基础,面试官非常棒,你答的不完整的还会帮你补充,当天就 offer 了,可是不想去北京(离家太远),拒了。

上汽安吉智能物联技术

5-30 ***投递,6-9 约面,当天面试。

6-9 一面(30min)

  1. 自我介绍。
  2. Redis 基本数据类型(真的很喜欢问)。
  3. Redis 怎么用的?
  4. 实现关注用 redis 啥数据类型比较好?
    • 集合,如果需要按活跃度或等级排序可以用有序集合。
  5. 讲讲Java 中的集合吧,详细说说?(也挺喜欢问的)
  6. HashMap 为什么不安全?如何实现安全的 HashMap?
  7. 你实现了一个数据库项目,讲讲这个项目的难点。
  8. 事务 ACID 性质?
  9. 项目中你是如何保障事务的 ACID 的呢?
  10. 索引相关,聚集索引和非聚集索引?
  11. Java 中的 IO。
  12. IO 多路复用底层?
  13. 反问。

两个面试官,一个问一个记录,总体而言不难,经过几次面试发现你一定要对项目特别熟悉,而且得提前打草稿,总结你项目的难点和技术亮点。

6-13 OC,一天考虑时间,拒了,等字节结果,虽说上汽集团是世界五百强,还是国企,但是能去互联网大厂肯定优先互联网大厂。

字节跳动

5-20 官网投递(无内推),5-20 当天简历挂,5-30 接到电话说被另一个部门捞了,约面,当天下午又打电话来说面试官有事,推迟一周......

6-6 15:00 一面(65min)

面试官上来介绍部门,介绍面试流程,无异议,开始面试。

  1. 介绍项目。

    • 这里面试官了解到我项目都是学习项目后貌似不感兴趣,就没问了。
  2. 计算机网络模型。

    • 5层 & 7层,介绍各层协议及功能。
  3. 详细介绍下 TCP 和 UDP?用在啥地方呢?

    • 这里介绍的比较详细,讲了差不多 10 分钟,面试官反馈也还不错。
  4. 场景题,类似 LOL 这种游戏用 UDP 还是 TCP 好?

    • 处于对延迟的厌恶,我秒回答 UDP...
  5. 你说用 UDP,那我万一放一个技能丢包了怎么办?

    • 考虑不周,在应用层做封装,实现可靠的 UDP 协议。
  6. 如何实现可靠的 UDP?

    • 参考 TCP,对 UDP 编号,在应用层做超时重传机制,然后连接管理和拥塞控制可以不用管,重点是超时重传机制,实现性能与可靠的折中。(UU 们有啥想法呀,可以讨论下)
  7. IP 协议是做什么的?链路层呢?应用层协议了解吗?http 状态码?

    • 路由表匹配,决定下一跳地址,然后用 ARP 找到下一跳 MAC,起到路由作用,链路层主要就是封装成帧、透明传输、差错检验,说了说 MAC 协议和 ARP 协议。
  8. 线程与进程间的关系。

  9. 进程有独立的虚拟地址空间是吧,那虚拟地址空间内有哪些东西呢?

    • 问你有哪些程序段了。
  10. 线程之间共享哪些数据?

    • 这里回答错了呜呜呜,我说了堆和动态链接库。
    • 答案是共享整个进程空间的所有数据,即使是线程内的独立栈,如果有一个指向该栈的指针,另一个线程也是可以访问的,所以任何数据都是可以共享的...
  11. 程序与进程间的关系?

    • 进程是程序的正在运行时,程序是进程的资源集合。
  12. 它们之间一一对应吗?

    • 不太清楚,我回答应该是一个程序可以多个进程。
  13. 说说 Java 泛型的原理?

    • 编译期的语法糖,编译期强制转换,运行时向上转型,谈了谈为什么这么设计,主要是兼容旧版本。
  14. 如下代码是否能运行,如果不能,会报什么错误?

    • 代码大概就像这样

      public static void main(String[] args) throws Exception {
        List<Integer> list = new ArrayList<>();
      
        list.add(1);
        list.add("123");
      
        Method add = list.getClass().getMethod("add");
        add.invoke(list, "321");
      
        String str = list.get(1);
      
        System.out.println(list);
        System.out.println(str);
      }
  15. synchronized 的原理,详细讲讲他为什么是可重入的?其他可重入锁了解吗?

    • 从偏向锁、轻量级锁、重量级锁 分别解释重入原因。
    • ReentrantLock,原理 AQS。
  16. 如下代码哪些方法是冲突的,为什么?

    • 比较简单,就是考你 synchronized 用法。
  17. Java 的类加载机制。

  18. 代码题,字符串匹配,字符串允许乱序,例如 "abcd",在文本串 "ucwdbaccwjab" 中第一次匹配到的位置是下标 3,则输出 3,

    • 太紧张了,代码题烂掉了,写了 20 分钟没写出来。
    • 一开始以为就是字符串匹配,本来想写 kmp,然后面试官让我写暴力,然后就写了个暴力匹配,,然后面试官提示可以乱序,这时候超级紧张。
    • 然后我以为我懂了,我以为是最小覆盖字串,呜呜呜,又理解错题目了,写完了才发现写错啦,浪费了好多时间。
    • 这里大脑已经空白了,停止转动了,知道面试官提示已经过去 1 小时了...想哭
  19. 反问

面完真的想哭,我算法没那么烂的,力扣 500+,周赛 2150 分,真没那么烂的,现在想着都有点难受,结束后三分钟滑动窗口秒了......

6-6 19:00 问卷调查,收到问卷以为凉了。

6-7 19:35 约二面,收到邮件我是蒙蔽的...可能是真缺人吧,只能感慨运气好,感谢面试官,感谢字节跳动,有时候你离成功就差了点运气......

6-9 16:00 二面(45min)

这一面貌似是 Leader 面,面试官比较老成,反问时还说会给我发 offer。

  1. 对一面做一个自我评价,你认为那里表现好,哪里表现不好。
    • 这里注意不好的地方一定得说一下你会做哪些改变。
    • 这里我还提了一句说我计算机基础不错,然后就悲催了......
  2. 你是怎么认为你计算机基础不错呢?
  3. 为什么经常总结就能反应你基础不错呢?
  4. 你善于思考能说明基础不错吗?
    • 麻了,最后说了我课程成绩都满绩,总算没问了。
  5. 平时不会的怎么学习呢?
  6. 多久能入职?实习多久?大三怎么办?
  7. 介绍一下常见的排序算法,复杂度,稳定性?
  8. 链表排序用什么排序呢?
    • 归并排序、快速排序。
  9. 面试官似乎不知道怎么快速排序,于是:算法题:链表快速排序。
    • 我都说了,能不会写吗,秒了。
  10. 谈谈你对设计模式的理解?
    • 这题压力好大,我说了很多面试官一直没反馈,等我继续说,说了 7-8 分钟,直到我两大眼瞪小眼,面试官才继续了问。
  11. 适配器模式和代理模式的区别?装饰器模式呢?
    • 谈了谈相同之处,都是增强,可扩展性号,从 UML 类图说明了不同之处,举了举几个例子。
  12. OS 中的死锁了解吗?
    • 这里说了很多,死锁必要条件,死锁预防,死锁检测,银行家算法。
  13. 算法题:死锁检测
    • 拓扑排序秒了。
  14. 反问
    • 面试官说我表现不错,会把 offer 发给我,当时贼开心。

6-9 20:00 问卷调查,6-10 10:35 三面预约,白开心了,还以为直接发 offer 了,面试官说话不算话(虽然结果还是 offer 了,似乎也没赖?)。

6-13 18:00 三面(55min)

字节面试基本不会重复,考察也挺全面的,第一面考察基础,OS + 计网,第二面考察算法与数据结构,还有点 hr 面的意思,三面主要考察项目。

  1. 自我介绍
  2. 介绍一下数据库项目,有什么难点,怎么解决的?
  3. 详细讲讲崩溃恢复,以及项目中检查点机制是如何加速崩溃恢复的。
    • 看我了解的还不错,就没问数据库了。
  4. 介绍一下 RPC 项目,有什么难点,怎么解决的?
  5. 介绍一下 RPC 的过程,以及你对 RPC 的理解?
  6. RPC 用了序列化协议?
    • kyro。
  7. 为什么使用 kyro,算法原理是什么,相比原生序列化,xml,json以及谷歌的 protobuf?
  8. 小程序前后端都是自己写的吗?后端用什么语言写的?
  9. Java 中数组是对象吗?为什么?
    • 是,同样经历类加载的5大步骤,符合对象的声明周期,面试时说错了,我说数组没有继承 Object,事实上是继承了的,晕...
  10. Java 中文编码几个字节?
    • 说 unicode 2 个,然后扯了扯 utf-8 变长编码。
  11. utf-8 编码原理,怎么变长?
  12. 平时怎么学习的,个人优点缺点?
    • 碰到这种非技术性问题,使劲扯,能拖一会时间是一会(狗头),我这里扯了十多分钟。
  13. 平时有自己学习什么框架吗?
    • redis,mq,spring 全家桶。
  14. 来讲讲 SpringBoot 吧,我没用过 SpringBoot,现在你得讲的让我理解它是干嘛用的?
    • 好难啊,讲的好乱,反问时面试官让我别背答案,可以多思考技术产生背景,问题背后原因等。
  15. 算法题:树的子结构
  16. 算法题:爬楼梯,这里是个变种版,一次能爬 1阶、2阶和 5 阶。
    • 简单题秒了。
    • 之后面试官让优化空间复杂度,我代码是这样的:
      public static void main(String[] args) throws Exception {
        int n = 9;
        int[] nums = new int[]{5, 3, 2, 1, 1};
        for (int i = 5; i <= n; i++) {
            int newVal = nums[0] + nums[1] + nums[4];
            for (int j = 4; j > 0; j--) {
                nums[j] = nums[j - 1];
            }
            nums[0] = newVal;
        }
        System.out.println(nums[0]);
      }
      面试官说不行,这样不是引入了额外的时间复杂度吗?如果把跳 5 阶改成跳 1000 阶你不是额外循环 1000 次?
    • 当时没想出来要怎么做,因为在枚举完 i 后 dp[i - 5] 肯定要变成 dp[i - 4],如果不赋值的话要怎么做的?因为时间关系面试官就没让我想了,回去之后想了想是不是可以用双端循环队列做,这样就可以达到 O(1)的移动了,不知道大家有啥想法?
  17. 反问

6-14 10:00 问卷调查
6-15 14:00 Offer,无 HR 面(感觉面试官把 HR 该问的都问过了...)

总的而言我不觉得我自己实力有多强,面试官知道我是大二的都问的挺基础的,运气占很大原因把,写写面经反馈一下社区,积攒一下运气,希望大家都能拿到自己想要的 offer,共勉!

下周就要入职了,有没有深圳的伙伴一起租房呢?

#面试复盘#
全部评论
面试不就一小时,你是撕了一小时代码还是撕代码到了一小时?
1 回复 分享
发布于 2022-08-11 11:00
真牛逼,大一写项目,满绩,力扣2150😢
13 回复 分享
发布于 2022-06-18 09:03
我大三才学的计网
8 回复 分享
发布于 2022-06-18 21:57
这尼玛大一?
3 回复 分享
发布于 2022-08-01 01:44
好强呀  大佬怎么学的呀
1 回复 分享
发布于 2022-06-28 18:43
中科全安这个公司可以去么
1 回复 分享
发布于 2022-07-14 20:22
***感觉好强啊,我现在一个研二的学生都觉得这些问题不是很容易 感觉还是好难呀
1 回复 分享
发布于 2022-11-29 14:52 陕西
楼主厉害,问下楼主上汽是在哪投的,能给个链接吗
点赞 回复 分享
发布于 2022-06-21 19:20
请问手撕时的测试用例,都是只用一个用例吗?要写测试用例的输入输出吗?🤔
点赞 回复 分享
发布于 2022-07-01 00:37
二叉树得自己建树写一个简单的测试用例,其他的一般题目都会有用例输出,能过题目的样例就行了
点赞 回复 分享
发布于 2022-07-04 09:18
沾沾欧气
点赞 回复 分享
发布于 2022-07-14 20:25
大佬好强
点赞 回复 分享
发布于 2022-07-18 02:18
大二就学了这么多 好牛
点赞 回复 分享
发布于 2022-07-30 18:43
实习岗位吗
点赞 回复 分享
发布于 2022-08-01 23:54
挺强的
点赞 回复 分享
发布于 2022-08-03 14:30
这就是大佬们 大二比大四的强多了
点赞 回复 分享
发布于 2022-08-06 10:44
什么部门大佬
点赞 回复 分享
发布于 2022-09-09 19:20 湖南

相关推荐

82 331 评论
分享
牛客网
牛客企业服务