首页 > 【23届内推】实习面经 Java后端 阿里 字节 腾讯 HW
头像
lulu_javaer
编辑于 2022-03-03 14:17
+ 关注

【23届内推】实习面经 Java后端 阿里 字节 腾讯 HW

HI, 看到这个帖子的老哥老姐老弟老妹们,我目前在阿里巴巴-阿里妈妈-淘宝联盟,目前招聘23届暑期实习生, 大家有兴趣来我们部门的话,欢迎投递和加我微信咨询。 fjl-61585


联系方式:  jinlu.fjl@alibaba-inc.com. 或者直接微信发我也行。WX: fjl-61585

部门简介:
我们是做什么的?
帮助淘宝APP内的商品/店铺/活动页 在淘宝APP之外的场景进行营销。
我们的盈利模式?
推广者将淘宝内的商品推广给商家,成交后商家支付佣金给推广者,平台对佣金进行抽成。

小组优势:
1. 广告部门,上一级的阿里妈妈事业群是集团广告收入的大头,年终奖丰厚。
2. 我所在的小组有大流量 高并发的c端 b端业务场景 ,有3个小队,分别专注于技术建设,数据赋能,生态开放业务,所以来这边可以选择的方向会更多,场景也更有挑战。
3. 团队加班不多,非618 双11期间,基本7-8点就都回去了。 周五6点左右。

Job Description:

部门:阿里妈妈

工作地点:杭州、北京

招聘岗位:JAVA研发工程师

面试流程:线上笔试+电话面试

面向群体:2021年毕业的应届生
投递方式:邮箱 jinlu.fjl@alibaba-inc.com. 或者直接微信发我也行。WX: fjl-61585 也可二维码自助投递
命名格式:秋招_姓名_学校_联系方式_岗位
自助内推,可全程反馈进度。


(常见问题与回答、具体职位描述信息: https://www.yuque.com/docs/share/a6c0c21b-a54f-4ca9-9c25-0e9aa5712a53?#




-=========================   原贴  ========================================
感觉面试还是主要围绕简历来问的,所以不熟悉的东西最好不要随便写上去。 项目和基础都很重要,整体的基础知识的框架可以参考GitHub 上 CYC2018的博客,分类很全,但是深入的学习还是要自己去看书,写demo。

项目中最好有难点,能够体现自己解决问题的过程和思路。 算法方面剑指offer + LeetCode 200左右吧。

投了10+公司,进行面试大概就这几家,其他没结果或者笔试被刷了。

最后求比较一下offer, 杭州阿里B端业务部门 和 深圳的字节 头条主端部门, 还请大家提提建议。
(后面会补充一下自己学习过程和路线,书籍等,给自学的同学一点参考)

腾讯:
一面:
  1. 讲一讲异常, throwable, exception, error
  2. try- catch
  3. 手写单例模式——很生疏,GG
  4. volatile ,作用,底层, lock 前缀的指令, 多CPU的嗅探机制,多处理器下的缓存一致性协议
  5. synchronized
  6. JVM 内存划分, 堆内存分代
  7. redis, 源码,
  8. spring bean的实例化过程。 ——不熟悉的地方不要写上去。
  9. AOP
  10. 使用redis来实现单点登录,那么当单个redis节点内存不够的时候,怎么办? 集群化,redis-Cluster
  11. 比较偏底层
华为:
一面:
  1. 自我介绍
  2. 项目中的可用性,性能,扩展性 如何提升
  3. nginx是如何实现反向***的,哪一层的方向***? 应用层
  4. 如何向外提供HTTPS协议的服务, 在内网使用http协议, 通过nginx配置来进行实现
  5. 设计一个网络的时候,需要考虑的因素
  6. 虚拟网络

字节跳动
  1. 自我介绍
  2. 单点登录
  3. JVM内存划分, 堆内存为什么要进行分代回收, 生命周期不同
  4. redis,主从,哨兵,集群,分布式锁。
  5. redis的对象类型, 每种对象类型对应的底层的数据结构,参考redis设计与实现。
    1. string, list, hash, set, sortedset.
    2. 每种对象都至少有2中数据结构, SDS, linkedlist, ziplist, intset, ziplist, skiplist
  6. ISN, TCP协议为什么要随机初始化一个序列号——安全性, 防止和上一次会话滞留的报文冲突


手撕算法:
  1. 把九亿三千零五万五千三百 转化为 对应的数字,
  2. 给了一个长度为n的 值的范围为0 到 n-1的数组,然后判断是否有重复的元素出现的问题。
  3. leetcode 42 雨水收集问题


拼多多:
一面:
  1. 自我介绍,redis,分布式锁, redlock算法,zookeeper分布式锁,分布式锁的问题
  2. 手写一个随机选择算法的变种

二面:
  1. 说明一下缺页中断, 虚拟内存
  2. JVM中的内存区域划分,堆的分代,为什么分代, 垃圾回收算法,垃圾回收器
  3. Linux进程间的通信方式, 管道,有名管道,socket,共享内存,消息队列
  4. 如何实现进程间特定场景下的高效通信, 问了存储相关的问题。
  5. MySQL索引类型, 底层的数据结构
  6. 手写一个双链表的插入和删除,查找方法

HR:
  1. 为什么换专业
  2. 有没有其他公司的offer,
  3. 职业规划
  4. 你认为自己转专业和科班出身相比差距在哪里,我们为什么要录用你 555
  5. 学习的过程, 如何去学习
招银
电话简历面:
  1. 自我介绍
  2. 事务的特性 ACID , 数据库的死锁发生的情景
  3. 死锁的四个必要特性, 非共享, 持有并等待, 非抢占, 循环等待
  4. 死锁避免 死锁预防
  5. 线程的状态 , 新建,就绪,running, wait, blocked, terminated
  6. sleep 和 wait 的区别, 类的不同,是否会释放持有的锁,monitor
  7. JDK 可重入锁, 读写锁 , 底层 AQS,抽象队列同步器的机制
  8. 悲观锁和乐观锁, 概念上,JDK 中的类, CAS的缺点, 空转,ABA问题。使用pause指令, AtomicStampedReference
  9. 讲一讲Servlet, web.xml 配置路径到servlet的映射, init, service, destroy
  10. 可以看一看Tomcat容器的过程 ,Connector和 Context容器两大部分。 完成从socket到 request和Response对象的构造
  11. SpringMVC的 dispatcher-servlet的请求解析过程
  12. redis介绍, 系统中的角色,作为缓存, 分布式session服务器
  13. redis的 性能,可用性,主从复制+哨兵, redis缓存访问有网络上的消耗。
  14. redis事务, 分布式事务, 2PC, 本地消息表等, 3PC



阿里:
一面:
  1. 自我介绍, 项目
  2. 收获最大的一个项目, 着重介绍, 项目的演进过程, 从提高系统可用性的来进行演进,例如redis的可用性,
  3. 分布式锁(项目), redlock,持久化机制,主从复制过程, redis知道的都说出来
  4. redis解决分布式Session问题, 单点登录, Session一致性问题,描述,如何实现
  5. IOC 的实例化过程,原理,
  6. AOP, JDK***, Proxy, InvocationHandler
  7. 一个循环链表进行是否为空判断
  8. 树的遍历, 层序,先、中、后的递归非递归实现
  9. 操作系统 P/V Semaphore类,
  10. CAS, AQS 实现
  11. 看哪些书, 论坛,如何学习Java
  12. 智力题 喝汽水问题, 2个空瓶换一瓶汽水,1元1瓶,可以买多少瓶汽水 问题,(刚好看过,通过借一瓶来最后再多喝一瓶)
二面:
  1. 自我介绍
  2. 在校,学习情况,参与项目(介绍一下业务方面,架构方面的过程)
  3. hosts文件
  4. 乐观锁, 悲观锁, 举例, 可以顺便说一下, CAS,volatile, synchronized
  5. 事务,分布式事务, 如何实现分布式事务, 两阶段提交,(过程)
  6. JVM堆划分,方法区,
  7. 执行了 system.gc()触发的GC机制,FGC, 如何进行回收的, 分代回收
  8. 系统周期性卡顿,如何定位问题,结合GC日志, YGC,FGC, 调整分代的大小, 减小FGC时间
  9. 产生FGC的原因

三面:
40+
  1. 自我介绍,学习过程,项目中的难点,如何解决,
  2. 如何去提升系统的可用性,性能,扩展性,伸缩性,等等, LVS,反向***,集群,异步,缓存等等
  3. 开放性的系统设计,一个车票查询系统,对最短时间,最短开销进行求解,类似于12306的火车票购票系统,。
  4. 亿万流量网站架构和新技术, 这本书可以参考一下

四面:
  1. 自我介绍
  2. 学习过程, 难点——
  3. synchronized关键字作用与静态方法和普通方法的区别,通过不同的对象的监视器来进行并发控制,monitorenter, monitorexit
  4. 服务器CPU使用率很高,如何排查, top 定位进程, 如果是Java,通过jstack进行线程快照分析,jmap,jhat 等等,
  5. 智力题
  6. 红黑树的优缺点
  7. AOP 动态***
  1. HR面:
  1. 自我介绍 学习过程
  2. 为什么选择转专业
  3. 项目中遇到的难点,
  4. 对部门的理解
  5. 个人的职业发展,城市的选择,职业方向,有没有其他公司的offer

=========================================================
下面是自己的一点自学和准备面试的过程,希望可以对其他人转行的人有帮助

自学过程:
首先对于Java后端开发的岗位而言,自己一开始也是从0开始学习的。最开始也只是知道有前端、后端、移动端、测试、算法等这些岗位,但是并不清楚这些岗位都是做什么工作的,在网上也没有找到对应的学习路线,就去知乎,或者别人的博客看看Java后端都需要学习那些知识。

刚开始学习的时候从Java基础知识入手,先看了一下《Head First Java》,然后《Java编程思想》看了不到一半就放弃了,基本看不懂。然后看了一下黑马的视频,看了一下大致的基础知识和web基础的部分,然后就可以开始学习框架和简单的开发了,刚开始自己可以在网上找一个Demo,跟着做一做,熟悉一下后端开发。(可以去牛客网或者慕课网找一个Demo项目跟着做一下)。在熟悉了基本的开发过程之后,可以进行深入做一些web项目。然后自己有针对性的进行学习,比方Redis,消息队列等。

大致就是下面这几个方面要进行学习:
  • 计算机基础:计网,OS,算法和数据结构必须熟悉;组成原理,编译原理等等看了更好
  • 语言基础:Java的一些语言特性,多线程,JVM
  • 数据库:基础概念,SQL,数据库的设计等
  • web基础:Servlet,JSP, HTTP协议, Cookie, Session等进行一下了解,可以自己用servlet写个demo
  • web框架:SpringMVC, Spring, Mybatis, 在项目实践中学习,先会用,然后深入。 SpringCloud, SpringBoot等也可以进行学习
  • 中间件:Redis, 消息队列这些也可以了解一下
  • 开发工具: Maven ,Git等等
  • 系统设计:如何提升系统并发,保证可用性,伸缩性,扩展性,安全性这几个方面的考虑。

自己在学习的大致就是上述的过程,也不是很有计划性,基本都是边学习边修改自己的计划。我在网上发现有一个博客讲解的Java后端的学习路线比较清晰。 博客地址:http://objcoding.com/2018/02/07/javaweb-learning/ 。 按照这个大纲进行学习我觉得会更清晰一点。



面试准备和阅读书籍:
大体的建议还是平时多coding,多看书,多思考,多总结,不要在面试前依赖面经总结,或者背面试问题这种途径,因为需要做到的是真正对某个问题理解了,知道解决方案,而不只是背过了答案。面经总结应该看成一种对自己进行查漏补缺的测验,而不是背诵的题库,功夫积累还是在平时。
面经总结可以 看一下CYC2018的博客,当然还有别人总结的面经,多多益善。

自己准备的过程就是先去看对应的书籍,基本理解之后再去看面经进行查漏补缺,自我检验,然后不断迭代反复的过程。所以我准备的各个方面进行一下总结。
  • 计算机基础:
    • 计网《计算机网络》谢希仁版,视频看了MOOC上的 哈工大视频;
    • 操作系统 《操作系统概念》,MOOC上哈工大的视频, B站的清华大学一个老师讲的操作系统视频, 也很好; 《深入理解计算机系统》也推荐,但我还没有看完。
    • 算法和数据结构,浙大的数据结构教材,然后看了MOOC上陈越姥姥和何钦铭老师的视频, 刷了一点PAT, 然后就是剑指offer和LeetCode。 之后看了《算法》(第四版), 《算法笔记》本来打算看的,但是后来放弃了。
    • C语言, 刚开始学的时候看了 MOOC上翁凯老师的视频,然后找了本C语言教材看了下
    • 计算机组成:简单看了下MOOC上的视频,过了一遍
    • 编译原理:没学,但感觉有必要学一下,对实践OS的一些实验和其他地方很有帮助
  • 语言基础
    • 基础:《Head First java》, 然后熟悉依稀Java基础的一下API,看一些基础知识的博客,我看的黑马视频,对API熟悉了点。
    • 深入:《effective Java》挑选一些章节阅读,《Java编程思想》(建议有一定的基础再进行阅读);或者 《Java编程核心技术》(第二卷) 和《Java编程思想》选一本读一下就行。
    • 多线程:《Java并发编程的艺术》, 可以结合一些网上相关的博客。 《Java编程思想》里面多线程部分。 想要继续深入可以看一下《Java并发编程实战》,内容更加复杂。
    • JVM:《深入理解JVM虚拟街》,内存分配, 类加载, 内存模型和多线程部分。这三部分可以重点看。
    • 源码阅读:JUC,集合类,常见类(String等),
  • 设计模式:
    • 菜鸟教程的 设计模式。(后来发现其实是直接翻译的国外的一个网站内容)。更多的还是平时的分析和使用。
  • 数据库:
    • SQL基础语法:《MySQL必知必会》
    • 数据库基础知识:《数据库系统概念》,只看了前面一点基础知识
    • MySQL:《高性能MySQL》 重点看了前面几章。
  • web基础:
    • 看的黑马的视频,主要是了解了HTTP,Cookie,Session,Servlet,Filter,JSP等基础知识,用servlet写了个demo
    • 框架 SSM, 主要是在项目中使用了一下,然后搜索了一些常见的问题,看了看文档。
  • web深入:
    • Spring框架:了解一下IOC,AOP的原理,自己尝试简单实现,书籍可以看一下《Spring实战》(我还没看)
    • SpringMVC,Mybatis, SpringBoot:这些感觉还是用到了看下文档,然后边用边学
    • Redis:了解一下基本的语法就可以使用,深入了解可以看一下《Redis设计与实现》
    • 消息队列:没怎么用
    • 微服务,SpringCloud,之类的也可以进行了解
  • 系统设计,架构:
    • 《大型网站技术架构:核心原理与案例分析+李智慧》, 《淘宝技术这十年》,《深入分析Javaweb技术内幕》
  • 其他书籍:
    • 《码出高效:Java开发手册》,对开发所涉及到的知识都可以有一个比较系统的了解
    • 《浪潮之巅》、《数学之美》只看了一点点
在最开始查询应该看哪些书籍的时候,主要参考了这么几个文章。 牛客网的一个妹子的面经 https://www.nowcoder.com/discuss/57771

知乎上的一个回答:


看书的一点小建议:
如果在某个阶段看书看不进去的时候,可能是自己其他方面的积累还不够,也可能是要自己静下心去深入分析,判断是哪种就需要自己去感觉了。例如我看完《Head First Java》直接开始看《Java编程思想》,就感到十分痛苦,大部分都不懂,不知所云。但是在使用Java进行一定程度的编码之后,对Java多线程有一定了解之后,再开始看《Java编程思想》的时候,就比之前好多了。
但是在看《Java并发编程的艺术》的时候,看不懂,就需要啃着硬骨头,静心看下去。

最重要的感觉就是不断地实践,看书,看博客,总结。不断反复。

全部评论

(22) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐