腾讯,华为,阿里…7家Java后端面试经验大公开!
感觉面试还是主要围绕简历来问的,所以不熟悉的东西最好不要随便写上去。项目和基础都很重要,整体的基础知识的框架可以参考GitHub 上 CYC2018的博客,分类很全,但是深入的学习还是要自己去看书,写demo。项目中最好有难点,能够体现自己解决问题的过程和思路。算法方面剑指offer + LeetCode 200左右吧。投了10+公司,进行面试大概就这几家,其他没结果或者笔试被刷了。
01 腾 讯
一面:
讲一讲异常, throwable, exception, error
try- catch
手写单例模式——很生疏,GG
volatile ,作用,底层, lock 前缀的指令, 多CPU的嗅探机制,多处理器下的缓存一致性协议
synchronized
JVM 内存划分, 堆内存分代
redis, 源码,
spring bean的实例化过程。——不熟悉的地方不要写上去。
AOP
使用redis来实现单点登录,那么当单个redis节点内存不够的时候,怎么办?集群化,redis-Cluster
比较偏底层
02 华 为
一面:
自我介绍
项目中的可用性,性能,扩展性 如何提升
nginx是如何实现反向代理的,哪一层的方向代理?应用层
如何向外提供HTTPS协议的服务, 在内网使用http协议, 通过nginx配置来进行实现
设计一个网络的时候,需要考虑的因素
虚拟网络
03 字 节 跳 动
自我介绍
单点登录
JVM内存划分, 堆内存为什么要进行分代回收, 生命周期不同
redis,主从,哨兵,集群,分布式锁。
redis的对象类型, 每种对象类型对应的底层的数据结构,参考redis设计与实现。
string, list, hash, set, sortedset.
每种对象都至少有2中数据结构, SDS, linkedlist, ziplist, intset, ziplist, skiplist
ISN, TCP协议为什么要随机初始化一个序列号——安全性, 防止和上一次会话滞留的报文冲突
04 手 撕 算 法
把九亿三千零五万五千三百 转化为 对应的数字,
给了一个长度为n的 值的范围为0 到 n-1的数组,然后判断是否有重复的元素出现的问题。
leetcode 42 雨水收集问题
05 拼 多 多
一面:
自我介绍,redis,分布式锁, redlock算法,zookeeper分布式锁,分布式锁的问题
手写一个随机选择算法的变种
二面:
说明一下缺页中断, 虚拟内存
JVM中的内存区域划分,堆的分代,为什么分代, 垃圾回收算法,垃圾回收器
Linux进程间的通信方式, 管道,有名管道,socket,共享内存,消息队列
如何实现进程间特定场景下的高效通信, 问了存储相关的问题。
MySQL索引类型, 底层的数据结构
手写一个双链表的插入和删除,查找方法
HR:
为什么换专业
有没有其他公司的offer,
职业规划
你认为自己转专业和科班出身相比差距在哪里,我们为什么要录用你 555
学习的过程, 如何去学习
06 招 商 银 行
电话简历面:
自我介绍
事务的特性 ACID , 数据库的死锁发生的情景
死锁的四个必要特性, 非共享, 持有并等待, 非抢占, 循环等待
死锁避免 死锁预防
线程的状态 , 新建,就绪,running, wait, blocked, terminated
sleep 和 wait 的区别, 类的不同,是否会释放持有的锁,monitor
JDK 可重入锁, 读写锁 , 底层 AQS,抽象队列同步器的机制
悲观锁和乐观锁, 概念上,JDK 中的类, CAS的缺点, 空转,ABA问题。使用pause指令, AtomicStampedReference
讲一讲Servlet, web.xml 配置路径到servlet的映射, init, service, destroy
可以看一看Tomcat容器的过程 ,Connector和 Context容器两大部分。完成从socket到 request和Response对象的构造
SpringMVC的 dispatcher-servlet的请求解析过程
redis介绍, 系统中的角色,作为缓存, 分布式session服务器
redis的 性能,可用性,主从复制+哨兵, redis缓存访问有网络上的消耗。
redis事务, 分布式事务, 2PC, 本地消息表等, 3PC
07 阿 里 巴 巴
一面:
自我介绍, 项目
收获最大的一个项目, 着重介绍, 项目的演进过程, 从提高系统可用性的来进行演进,例如redis的可用性,
分布式锁(项目), redlock,持久化机制,主从复制过程, redis知道的都说出来
redis解决分布式Session问题, 单点登录, Session一致性问题,描述,如何实现
IOC 的实例化过程,原理,
AOP, JDK代理, Proxy, InvocationHandler
一个循环链表进行是否为空判断
树的遍历, 层序,先、中、后的递归非递归实现
操作系统 P/V Semaphore类,
CAS, AQS 实现
看哪些书, 论坛,如何学习Java
智力题 喝汽水问题, 2个空瓶换一瓶汽水,1元1瓶,可以买多少瓶汽水 问题,(刚好看过,通过借一瓶来最后再多喝一瓶)
二面:
自我介绍
在校,学习情况,参与项目(介绍一下业务方面,架构方面的过程)
hosts文件
乐观锁, 悲观锁, 举例, 可以顺便说一下, CAS,volatile, synchronized
事务,分布式事务, 如何实现分布式事务, 两阶段提交,(过程)
JVM堆划分,方法区,
执行了 system.gc()触发的GC机制,FGC, 如何进行回收的, 分代回收
系统周期性卡顿,如何定位问题,结合GC日志, YGC,FGC, 调整分代的大小, 减小FGC时间
产生FGC的原因
三面:
自我介绍,学习过程,项目中的难点,如何解决,
如何去提升系统的可用性,性能,扩展性,伸缩性,等等, LVS,反向代理,集群,异步,缓存等等
开放性的系统设计,一个车票查询系统,对最短时间,最短开销进行求解,类似于12306的火车票购票系统,。
亿万流量网站架构和新技术, 这本书可以参考一下
四面:
自我介绍
学习过程, 难点——
synchronized关键字作用与静态方法和普通方法的区别,通过不同的对象的监视器来进行并发控制,monitorenter, monitorexit
服务器CPU使用率很高,如何排查, top 定位进程, 如果是Java,通过jstack进行线程快照分析,jmap,jhat 等等,
智力题
红黑树的优缺点
AOP 动态代理
HR面:
自我介绍 学习过程
为什么选择转专业
项目中遇到的难点,
对部门的理解
个人的职业发展,城市的选择,职业方向,有没有其他公司的offer
下面是自己的一点自学和准备面试的过程,希望可以对其他人转行的人有帮助。
大致就是下面这几个方面要进行学习:
计算机基础:计网,OS,算法和数据结构必须熟悉;组成原理,编译原理等等看了更好
语言基础:Java的一些语言特性,多线程,JVM
数据库:基础概念,SQL,数据库的设计等
web基础:Servlet,JSP, HTTP协议, Cookie, Session等进行一下了解,可以自己用servlet写个demo
web框架:SpringMVC, Spring, Mybatis, 在项目实践中学习,先会用,然后深入。SpringCloud, SpringBoot等也可以进行学习
中间件:Redis, 消息队列这些也可以了解一下
开发工具:Maven ,Git等等
系统设计:如何提升系统并发,保证可用性,伸缩性,扩展性,安全性这几个方面的考虑。
自己在学习的大致就是上述的过程,也不是很有计划性,基本都是边学习边修改自己的计划。
面试准备和阅读书籍:
大体的建议还是平时多coding,多看书,多思考,多总结,不要在面试前依赖面经总结,或者背面试问题这种途径,因为需要做到的是真正对某个问题理解了,知道解决方案,而不只是背过了答案。面经总结应该看成一种对自己进行查漏补缺的测验,而不是背诵的题库,功夫积累还是在平时。
看书的一点小建议:
如果在某个阶段看书看不进去的时候,可能是自己其他方面的积累还不够,也可能是要自己静下心去深入分析,判断是哪种就需要自己去感觉了。例如我看完《Head First Java》直接开始看《Java编程思想》,就感到十分痛苦,大部分都不懂,不知所云。
但是在使用Java进行一定程度的编码之后,对Java多线程有一定了解之后,再开始看《Java编程思想》的时候,就比之前好多了。但是在看《Java并发编程的艺术》的时候,看不懂,就需要啃着硬骨头,静心看下去。最重要的感觉就是不断地实践,看书,看博客,总结,不断反复。
转载:https://mp.weixin.qq.com/s/MIgdbabIJrX64h0IWPEIHg
腾讯,华为,阿里…7家Java后端面试经验大公开!的更多相关文章
- Java后端面试经验总结分享(一)
今天下午两点的时候,我去面了一家招Java开发的公司,本人工作经验2年多一丢丢. 跟大部分公司类似,先做一份笔试题,题目都比较简单,基本都写完了.我把题目以及答案列在下面一下,给自己做一下总结的,也分 ...
- 三年半Java后端面试经历
经过半年的沉淀,加上对MySQL,redis和分布式这块的补齐,终于开始重拾面试信心,再次出征. 鹅厂 面试职位:go后端开发工程师,接受从Java转语言 都知道鹅厂是cpp的主战场,而以cpp为背景 ...
- Java后端面试的一切技巧和常见的问题经验总结
原文地址:cnblogs.com/JavaArchitect/p/10011253.html 上周,密集面试了若干位Java后端候选人,工作经验在3到5年间.我的标准其实不复杂(适用90%小小小公司, ...
- 转:Java后端面试自我学习
引自:https://www.cnblogs.com/JavaArchitect/p/10011253.html 最近面试java后端开发的感受:如果就以平时项目经验来面试,通过估计很难——再论面试前 ...
- 三年半Java后端面试鹅厂,三面竟被虐的体无完肤
经过半年的沉淀,加上对MySQL,redis和分布式这块的补齐,终于开始重拾面试信心,再次出征. 鹅厂 面试职位: go后端开发工程师,接受从Java转语言 都知道鹅厂是cpp的主战场,而以cpp为背 ...
- 两年Java的面试经验
前言:从过年前就萌生出要跳槽的想法,到过年来公司从3月初提出离职到23号正式离职,上班的时间也出去面试过几家公司,后来总觉的在职找工作总是得请假,便决心离职后找工作.到4月10号找到了一家互联网公司成 ...
- 工作三年终于社招进字节跳动!字节跳动,阿里,腾讯Java岗面试经验汇总
前言 我大概我是从去年12月份开始看书学习,到今年的6月份,一直学到看大家的面经基本上百分之90以上都会,我就在5月份开始投简历,边面试边补充基础知识等.也是有些辛苦.终于是在前不久拿到了字节跳动的o ...
- Java面经 面试经验 互联网公司面试经验 后端面试经验
应聘相关 声明: 1,程序员相关的哈 2,万事无定论,比如说,就算你小学毕业,但是java基础却扎实到变态,我相信open的公司还是会给你机会的. 3,心态很重要,虽然日常的心态不容易控制,面试那俩小 ...
- 2018年Java后端面试经历
楼主16年毕业,16年三月份进入上一家公司到今年3月底,所以这是一份两年工作经验面经分享. 都说金三银四,往些年都是听着过没啥特别的感觉.今年自己倒是确确实实体验了一把银四,从3月26裸辞到4月17号 ...
随机推荐
- 2019CCPC秦皇岛I题 Invoker(DP)
Invoker Time Limit: 15000/12000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total ...
- 详谈springboot启动类的@SpringBootApplication注解
前几天我们学会了如何创建springboot项目今天我们说一下他是怎么运行的为什么不需要我们再去编写繁重的配置文件的 @SpringBootApplication 首先我们看一下这个注解,他是用来标注 ...
- SpringBoot+SpringDataJPA如何实现自定义查询[多表,多条件,分页,自定义sql封装]
举个例子:我们要在已经搭建好了的JPA环境下实现联合多表,多条件,多排序条件,分页查询一个表格数据,下面的表格 返回类MyJSON: public class MyJSON { private Str ...
- Python 命令行之旅:使用 click 实现 git 命令
作者:HelloGitHub-Prodesire HelloGitHub 的<讲解开源项目>系列,项目地址:https://github.com/HelloGitHub-Team/Arti ...
- 让外部的开发机直接访问Kubernetes群集内的服务!
让外部的开发机直接访问Kubernetes群集内的服务! 1.场景 容器化+K8s编排已经是现在进行时把网站的多个项目设计为云原生(Cloud Native)或老项改造为云原生可以获得诸多能力例如无云 ...
- Python爬虫基础——XPath语法的学习与lxml模块的使用
XPath与正则都是用于数据的提取,二者的区别是: 正则:功能相对强大,写起来相对复杂: XPath:语法简单,可以满足绝大部分的需求: 所以,如果你可以根据自己的需要进行选择. 一.首先,我们需要为 ...
- javascript树形汇总金额
在开发企业应用的时候总会遇到树形汇总金额的场景,即将树形的列表中的叶子节点(没有子节点)的金额汇总到父节点上. 这种需求一般是在前端进行处理,即使用JavaScript处理,因为叶子节点的金额可能是不 ...
- Java 从入门到进阶之路(十四)
在之前的文章我们介绍了一下 Java 中的抽象类和抽象方法,本章我们来看一下 Java 中的接口. 在日常生活中,我们会接触到很多类似接口的问题,比如 USB 接口,我们在电脑上插鼠标,键盘,U盘的时 ...
- VS2019添加Link to SQL类之后,LinqDataSource配置数据源没有可选项
原创. 环境:visual studio 2019 ,.net framwork 4.0 问题: 1.新建Linq to SQL类后(.dbml文件),从服务器资源管理面板中数据库连接中,把表Mill ...
- 利用Python多线程来测试并发漏洞
需求介绍 有时候想看看Web应用在代码或者数据库层有没有加锁,比如在一些支付.兑换类的场景,通过多线程并发访问的测试方式可以得到一个结论. 步骤 1. Burp Suite安装插件 安装一个Copy ...