一名工作五年的Java程序员横扫BAT面试经历!值得借鉴!

整个春招持续了4个月,对自己意志也是一个很大的挑战。我也有幸能与那么多优秀的人一起并肩作战,让我坚持到最后一刻,感谢有你们。

这个春招也遇到了很多奇怪的公司,比如说美团不知为何不给内推,CVTE笔试刷掉有实习经历的,吉比特挂得莫名其妙,网易玄学招人,京东20分钟面试,华为聊天招人

面试详细过程


阿里巴巴

一面(36分钟)芝麻信用

  1. hashmap和hashtable区别
  2. 为什么产生死锁
  3. jvm类加载
  4. java反射获取私有属性,改变值
  5. 反射用途
  6. 所用数据库
  7. 项目难点,问题
  8. 如何解决项目中遇到的问题
  9. 项目中遇到最自豪的地方
  10. 会什么算法

二面(44分钟)支付宝创新

  1. 讲项目
  2. 数据库乐观锁使用
  3. 状态机
  4. 如何解决状态机不对问题
  5. 如何分库分表
  6. MySQL极限
  7. HashMap源码
  8. 设计一个线程安全的HashMap
  9. 快排的实现,时间复杂度和空间复杂度
  10. 会什么算法
  11. 如何把项目变成SOA架构
  12. Spring源码,最深刻的模块,aop用途
  13. JVM内存模型
  14. 垃圾回收机制
  15. 项目中查看垃圾回收

三面(33分钟)菜鸟国际

  1. 项目中的权限管理
  2. 登录状态如何储存
  3. session和cookie的区别,session如何管理
  4. HashMap底层结构
  5. synchronized关键字的用法
  6. synchronized修饰类方法和普通方法的锁区别,获取类锁之后还能获取对象锁吗
  7. 类加载器的双亲委派模型的作用,能重复加载某个类吗
  8. 类加载器的类的缓存,key是什么
  9. 介绍Redis
  10. 如何将数据分布在不同的Redis
  11. 有了解过取余算法?
  12. spring的apo实现
  13. 字节码结构
  14. 浏览器输入网址过程,结合springmvc

四面(36分钟)菜鸟国际供应链

  1. HashMap在大量哈希冲突该怎么处理
  2. 红黑树比BST优点
  3. MySQL为什么使用B+树
  4. 多个索引会有多份数据吗
  5. 数据库的隔离级别和解决的问题
  6. 数据库默认隔离级别,一定会产生幻读吗,怎么解决
  7. 输入网址到展示的整个过程,结合springmvc来讲
  8. 负载均衡的算法
  9. 哈弗曼编码,如何解决译码问题
  10. 实习会对工作有影响吗
  11. 用英文介绍一个项目
  12. 如何查看系统负载
  13. 描述一个解决问题的过程
  14. 如何把文件从服务器复制到本地,用什么命令

五面(27分钟)菜鸟技术部

  1. 当时怎么找到百度这个机会的
  2. 项目中用的哪些技术
  3. 项目如何设计流程流转,如果是你的话该怎么设计
  4. MySQL使用的索引结构,查找效率
  5. MySQL查询优化
  6. MySQL慢查询开启,语句分析
  7. HashMap查找效率
  8. JVM内存模型
  9. 设计模式,策略模式的使用场景
  10. 如何确保单例线程安全
  11. Spring的bean的默认范围
  12. 对Netty的了解
  13. 未来发展规划
  14. 如何让代码可读性更加复杂

六面(22分钟)HR面

  1. 说一下发展方向
  2. 说一下经验不足导致的问题
  3. 说一下挑战杯的工作内容
  4. 说一下你给挑战杯项目的主要贡献
  5. 实习时间
  6. 拿到了哪些offer,你是怎么考虑的
  7. 为什么不选择腾讯
  8. 腾讯技术栈和阿里技术栈的区别

腾讯

一面(支付)

  1. jqc的介绍
  2. 如何确保多台机器不会重复消费
  3. 如何确保消费了反馈失效问题(用事务管理,先储存再消费,失败就回滚)
  4. 如何防止数据库单点问题
  5. paxos算法
  6. raft算法
  7. spring的aop实现
  8. 三种操作,a:++,b:–,c:/2(只能偶数),求i变1的最少次数
  9. 人才培养(轮流尝试,提出任务,鼓励实现)
  10. 没有深度的广度没有意义,由广变宅,由浅入深
  11. 设计时需要经验但堤防经验主义
  12. 百度技术氛围比腾讯好

二面

  1. 手写多线程买票代码
  2. 手写ServerSocket使用代码
  3. java有多少种线程池,固定线程池是怎样的
  4. Collection的子接口
  5. Map的接口,HashMap应用场景
  6. Queue的父接口,使用场景
  7. 数据库主从复制配置
  8. Spring的IOC优点,解决了什么问题(解耦)
  9. Bean的生命周期
  10. Bean的范围,gobal session的作用
  11. 手写SpringMVC流程
  12. 如何平衡生活和工作
  13. 职业发展规划
  14. 为何不考研
  15. redirect和forward区别
  16. 大学中最大的挑战
  17. 加密算法

HR面

  1. 喜欢做什么
  2. 喜欢看什么电影,带着什么心态去看
  3. 会再回百度吗
  4. 还有什么面试
  5. 腾讯阿里选什么,为什么选腾讯
  6. 是否独生
  7. 家里人希望做什么

今日头条

抖音一面

  1. 手撕LFU,要求get和put都为O(1)
  2. 在一个环状的城市,小偷可以选择偷或者不偷任意一家,但被偷的房子不能相连,求最大价值

效率工程一面

  1. 储水题
  2. 如何找项目性能瓶颈
  3. 有多少种类型的缓存,从客户端到服务端
  4. 如何查看系统性能,性能指标
  5. redis数据类型
  6. redis的aof太大如何优化
  7. mysql的主从复制
  8. mysql的引擎,区别
  9. https的建立链接过程
  10. https的传输数据是否是对称加密
  11. tcp拥塞控制
  12. epoll和select
  13. nginx如何处理连接
  14. nginx如何做性能优化
  15. apache和nginx区别
  16. 两支不均匀香,测出15分钟

效率工程二面

  1. 手写LRU
  2. 查看系统负载
  3. 进程通信方法
  4. 管道如何使用
  5. socket建立过程
  6. 如何高效处理socket
  7. NIO的原理和,连接切换方式
  8. 使用什么命令查看系统负载,第一行是什么
  9. 一个表user_id,order_date,要查用户订单,某一天订单,某个用户某天订单,如何建索引
  10. 复合索引的结构
  11. redis的常用数据结构
  12. zset的底层数据结构,跳跃表如何实现
  13. redis如何持久化RDB

效率工程HR面

  1. 怎么找到百度实习和第一份实习
  2. 如何处理学业和实习
  3. 讲一下项目中沟通协作的过程
  4. 如何你是owner你是怎么设计这个项目
  5. 拿到了什么offer,如何考虑

蘑菇街

一面

  1. 凤聆的权限管理如何设计
  2. 如何将9s提升到0.3s
  3. 用没有了解过其他搜索框架例如solr
  4. 有了解过协程吗?轻在哪
  5. jvm查看gc命令
  6. 如何解决jvm的问题
  7. mysql in,not in,like走不走索引
  8. 开发环境,开发IDE
  9. 使用什么命令查看cpu和内存情况
  10. 如何查看进程的线程情况top -H -p
  11. 秒杀场景设计
  12. 秒杀时如果机器资源有限怎么办
  13. 可以保证实习时间
  14. 对自己未来的规划

二面(小程序部门)

  1. 父母对来杭州有没有意见
  2. 会考虑转正吗
  3. 老师或者同学会怎么评价,如何体现技术比较强
  4. 大学中最自豪的一件事
  5. 项目中解决的一个问题
  6. Nginx超时怎么办
  7. mysql索引相关
  8. %匹配实现原理
  9. 获取www.baidu.com最后一个点的内容"com"最优方法,为何,时间复杂度,如何实现

HR面

  1. 深层介绍自己
  2. 对你影响比较深的一个人
  3. 想成为怎样的人
  4. 最有成就感的事
  5. 最近的挫折
  6. 怎么发现瓶颈
  7. 学校和工作环境有什么不同
  8. 周围同学比较,有什么优势

京东

一面

  1. 快排原理
  2. HashMap底层结构
  3. ConcurrentHashMap线程安全原理
  4. 类加载机制
  5. 左连接和右连接区别
  6. tcp建立连接的方式
  7. close wait和time wait在什么情况下出现
  8. http组成
  9. http头部,keepalive的意义
  10. https流程
  11. 如何确保密钥安全,是否非对称加密
  12. 线程池的实现原理

二面

  1. 在百度学习到什么
  2. 对java的了解哪些方面
  3. 还了解过其他语言吗,不同语言只是不同偏好
  4. aqs的具体实现
  5. 并发包用到那些

HR面

  1. 在百度学习到什么
  2. 为什么从百度离职
  3. 有什么优点和缺点
  4. 遇到问题是偏向解决问题,还是抱怨问题
  5. 能实习多久

网易邮箱

一面

  1. java公司
  2. dfs和bfs实现原理和应用场景
  3. ArrayList的底层实现
  4. Elastisearch的索引如何储存
  5. JVM内存模型
  6. java堆分代,对象分配
  7. 在项目中遇到什么问题,如和解决
  8. 对自己这个项目打几分,为何转项目
  9. HashMao底层实现,介绍红黑树
  10. String a=“abc” String b=“a”+“bc” a==b?
  11. 遇到紧急的需求该如何完成
  12. 手写ArrayList添加11个元素
  13. n个0~9的数,找和为7的数对
  14. MySQL的引擎,所使用索引的结构
  15. B树和B+树的区别
  16. 代码优化地方
  17. 平时看什么论坛
  18. 自研JQC的实现原理,和kafka的区别
  19. 抢红包实现
  20. 如何传输密码(非对称加密,https)
  21. https的证书在哪颁发

终面(HR+主管)

  1. 如何找到两个实习
  2. 学校允许实习吗
  3. 项目中的挑战
  4. 通过学习解决的最大一个困难
  5. 如何处理项目,学习,实习的时间
  6. 为什么离职百度
  7. 为什么得不到上司的信任,当时有更好的选择吗

网易游戏

  1. 如何保证项目扩展性,依赖问题
  2. 消息队列同时消费问题
  3. 进程的通讯方式?哪种最高效
  4. 本机socket需要经过协议栈解包吗
  5. linux文件管理,文件类型
  6. 一致性哈希实现
  7. 统计海量词频最高10个单词,所用的数据结构
  8. 强类型/弱类型和静态类型/动态类型
  9. JVM类加载器
    10 .查看机器性能
  10. 查看cpu负载,一般为多少,过高怎么解决
  11. 机器性能是如何读取的

面试感受

春招是一个很刺激且很折磨人的过程,你可能会遇到各种奇奇怪怪的公司,但只有不断提升自己的实力,才有更大可能拿到Offer,拿不到Offer的小伙伴也不要气馁,毕竟秋招才是重头戏,还有那么长的时间可以准备,我相信你春招过后也知道自己哪方面比较薄弱。

在此小编先分享针对BAT面试整理出来的部分面试答案,需要获取的朋友们可以加一下Qqun:963944895免费获取。

同时也整理了一套靠谱的学习知识图谱,希望在帮助各位秋招中斩获理想的Offfer

对于程序员来说,如果哪一天开始他停止了学习,那么他的职业生涯便开始宣告消亡。”这不是什么危言耸听的怪语,而是一位大牛几年前告诉我的。

近年来因为程序员的薪资一路走高,导致从事IT行业的人越来越多,间接的也让企业对于开发人员的要求也越来越高。学习到什么程度才有资格说自己精通Java?个人觉得至少需要做到以下几点:

1. 重视代码品质

重视代码品质,精益求精,这是技术开发的本质,也是程序员的立足之本

对处于还没工作或者工作1年左右这个阶段的人来说,看书是比较好的提升方式,推荐《Java编程思想》、《effective java》等。需要注意的是,在看书的过程中一定要思考能否运用书中的经验来改善自己写的代码,运用到实处,比如看到final和static,想想自己代码中用的是否合理。

此外,还可以看些常用的开源框架,如果你用的是Spring框架等,那么下面知识图谱可以借鉴:

2. 扩大技术视野

打好基础后,主动跳出舒适区,不断扩大自己的技术视野

这一步比较难,因为很多人会被公司的技术和业务牵着走。比如公司当前的业务规模决定了技术上不需要分布式技术,很多人就不会去思考规模大了之后如何利用分布式技术来解决问题。

这种时候,除了寻找更大规模的业务外,要时刻保持跳出当前层级和环境来思考的习惯。比如,你只用了关系型数据库,有没有想过数据一直产生,到达TB级别的时候该如何快速检索与保存呢?

3. 微服务架构

微服务是现在互联网架构技术中最火热的话题之一,也是小编目前正在学习研究的方向。在阿里面试过程中,面试官很少会问到关于微服务相关的问题。但作为一名开发者,一名有技术梦想的程序员微服务架构是现在必须要去了解的主流技术,小编给自己制定了一个微服务技术的学习计划:

4. 并发编程

并发编程几乎是所有互联网公司面试必问问题,并发编程是Java程序员最重要的技能之一,也是最难掌握的一种技能。它要求编程者对计算机最底层的运作原理有深刻的理解,同时要求编程者逻辑清晰、思维缜密,这样才能写出高效、安全、可靠的多线程并发程序。目前网上没有系统的全面的并发编程学习图谱,我搜集了很多资料总结出来一个最全面的学习图谱:

5. 性能优化

性能一直是让程序员比较头疼的问题。当系统架构变得复杂而庞大之后,性能方面就会下降,特别是阿里巴巴这样的一线互联网公司最为注重,因此想进入阿里,性能优化一定是要去深入学习与理解的一环,本屌在性能优化这一块虽然不能算专家,也可以自信的说是精通了。

6. 设计模式

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。

7. 底层知识

从架构设计,到应用层调优,再深入了解底层原理,扎实的Java基本功才能让自己变为扫地神僧:

  • 内存模型
  • 并发模式
  • 线程模型
  • 锁细节


以上七大知识体系是我从业多年总结出来的经验,都是当前最主流的技术,技术的突破需要依赖业务场景的需求和自身刻意的规划学习,二者缺一不可。但前者是机会,往往不是自己能完全把控的,如果在工作中没有实践场景,最好的办法就是系统的学习与梳理,待机会来临时才能一展身手。如果对Java分布式、工程化、高并发、微服务,JVM等技术感兴趣的可以加Qqun:963944895免费获取已整理好的部分学习资料。

猜你喜欢

转载自blog.csdn.net/Java_No01/article/details/90671632