感觉面试还是主要围绕简历来问的,所以不熟悉的东西最好不要随便写上去。项目和基础都很重要,整体的基础知识的框架可以参考GitHub 上 CYC2018的博客,分类很全,但是深入的学习还是要自己去看书,写demo。项目中最好有难点,能够体现自己解决问题的过程和思路。算法方面剑指offer + LeetCode 200左右吧。投了10+公司,进行面试大概就这几家,其他没结果或者笔试被刷了。

01 腾 讯

一面:

  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. 比较偏底层

02 华 为

一面:

  1. 自我介绍

  2. 项目中的可用性,性能,扩展性 如何提升

  3. nginx是如何实现反向代理的,哪一层的方向代理?应用层

  4. 如何向外提供HTTPS协议的服务, 在内网使用http协议, 通过nginx配置来进行实现

  5. 设计一个网络的时候,需要考虑的因素

  6. 虚拟网络

03 字 节 跳 动

  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协议为什么要随机初始化一个序列号——安全性, 防止和上一次会话滞留的报文冲突

04 手 撕 算 法

  1. 把九亿三千零五万五千三百 转化为 对应的数字,

  2. 给了一个长度为n的 值的范围为0 到 n-1的数组,然后判断是否有重复的元素出现的问题。

  3. leetcode 42 雨水收集问题

05 拼 多 多

一面:

  1. 自我介绍,redis,分布式锁, redlock算法,zookeeper分布式锁,分布式锁的问题

  2. 手写一个随机选择算法的变种

二面:

  1. 说明一下缺页中断, 虚拟内存

  2. JVM中的内存区域划分,堆的分代,为什么分代, 垃圾回收算法,垃圾回收器

  3. Linux进程间的通信方式, 管道,有名管道,socket,共享内存,消息队列

  4. 如何实现进程间特定场景下的高效通信,  问了存储相关的问题。

  5. MySQL索引类型, 底层的数据结构

  6. 手写一个双链表的插入和删除,查找方法

HR:

  1. 为什么换专业

  2. 有没有其他公司的offer,

  3. 职业规划

  4. 你认为自己转专业和科班出身相比差距在哪里,我们为什么要录用你  555

  5. 学习的过程, 如何去学习

06 招 商 银 行

电话简历面:

  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

07 阿 里 巴 巴

一面:

  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的原因

三面:

  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

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

大致就是下面这几个方面要进行学习:

  • 计算机基础:计网,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后端面试经验大公开!的更多相关文章

  1. Java后端面试经验总结分享(一)

    今天下午两点的时候,我去面了一家招Java开发的公司,本人工作经验2年多一丢丢. 跟大部分公司类似,先做一份笔试题,题目都比较简单,基本都写完了.我把题目以及答案列在下面一下,给自己做一下总结的,也分 ...

  2. 三年半Java后端面试经历

    经过半年的沉淀,加上对MySQL,redis和分布式这块的补齐,终于开始重拾面试信心,再次出征. 鹅厂 面试职位:go后端开发工程师,接受从Java转语言 都知道鹅厂是cpp的主战场,而以cpp为背景 ...

  3. Java后端面试的一切技巧和常见的问题经验总结

    原文地址:cnblogs.com/JavaArchitect/p/10011253.html 上周,密集面试了若干位Java后端候选人,工作经验在3到5年间.我的标准其实不复杂(适用90%小小小公司, ...

  4. 转:Java后端面试自我学习

    引自:https://www.cnblogs.com/JavaArchitect/p/10011253.html 最近面试java后端开发的感受:如果就以平时项目经验来面试,通过估计很难——再论面试前 ...

  5. 三年半Java后端面试鹅厂,三面竟被虐的体无完肤

    经过半年的沉淀,加上对MySQL,redis和分布式这块的补齐,终于开始重拾面试信心,再次出征. 鹅厂 面试职位: go后端开发工程师,接受从Java转语言 都知道鹅厂是cpp的主战场,而以cpp为背 ...

  6. 两年Java的面试经验

    前言:从过年前就萌生出要跳槽的想法,到过年来公司从3月初提出离职到23号正式离职,上班的时间也出去面试过几家公司,后来总觉的在职找工作总是得请假,便决心离职后找工作.到4月10号找到了一家互联网公司成 ...

  7. 工作三年终于社招进字节跳动!字节跳动,阿里,腾讯Java岗面试经验汇总

    前言 我大概我是从去年12月份开始看书学习,到今年的6月份,一直学到看大家的面经基本上百分之90以上都会,我就在5月份开始投简历,边面试边补充基础知识等.也是有些辛苦.终于是在前不久拿到了字节跳动的o ...

  8. Java面经 面试经验 互联网公司面试经验 后端面试经验

    应聘相关 声明: 1,程序员相关的哈 2,万事无定论,比如说,就算你小学毕业,但是java基础却扎实到变态,我相信open的公司还是会给你机会的. 3,心态很重要,虽然日常的心态不容易控制,面试那俩小 ...

  9. 2018年Java后端面试经历

    楼主16年毕业,16年三月份进入上一家公司到今年3月底,所以这是一份两年工作经验面经分享. 都说金三银四,往些年都是听着过没啥特别的感觉.今年自己倒是确确实实体验了一把银四,从3月26裸辞到4月17号 ...

随机推荐

  1. Java中替换字符串中特定字符,replaceAll,replace,replaceFirst的区别

    使用“;”替换过字符串中的“,” public class Test01 {public static void main(String[] args) {String number = " ...

  2. linux mysql,tomcat与java的安装

    先将服务器的安全组设置为 把所有端口或者所需要的端口开放 然后测试远程访问 ssh 用户@ip                       登录 输入密码 service iptables stop  ...

  3. 模拟摄像头解码模块最新测试 TVP5150模块 FPGA+SDRAM+TVP5150+VGA 实现PAL AV输入 VGA视频输出

    模拟摄像头解码模块最新测试  TVP5150模块  FPGA+SDRAM+TVP5150+VGA  实现PAL AV输入 VGA视频输出 测试使用电视机顶盒的AV模拟信号输入,VGA显示器输出测试,效 ...

  4. JAVA可视化闹钟源码

    概述 一些同学的Java课设有这样一个问题,比较感兴趣就做了一下 功能介绍: 1.可增加闹钟 2.可删除闹钟 3.时间到了响铃 4.关闭闹钟不会丢失闹钟(因为闹钟存储在txt文件中,不会因程序关闭就终 ...

  5. 6种微服务RPC框架,你知道几个?

    开源 RPC 框架有哪些呢? 一类是跟某种特定语言平台绑定的,另一类是与语言无关即跨语言平台的. 跟语言平台绑定的开源 RPC 框架主要有下面几种. Dubbo:国内最早开源的 RPC 框架,由阿里巴 ...

  6. Kubernetes基本概念和术语之《Master和Node》

    Kubernetes中的大部分概念如Node.Pod.Replication Controller.Service等都可以看作一种“资源对象”,几乎所有的资源对象都可以通过Kubernetes提供的k ...

  7. 阿里云https证书Apache配置

    最近玩小程序,只支持https协议,于是给网站添加https支持.手上没钱,自己生成的证书不受信任,找到了阿里云的免费证书(PS:证书可以用在其他云主机上,不一定是阿里云的主机).如何购买下载不多说, ...

  8. ansible 基础命令

    ansible 命令总结 1. Ad-HOC: 适合临时执行任务2. Playbook: 适合一些复杂的部署和配置环境 一 . Ad-HOC: 适合临时执行任务ansible-doc -l 查看ans ...

  9. Java中接口和抽象类的区别?

    抽象类 抽象类必须用 abstract 修饰,子类必须实现抽象类中的抽象方法,如果有未实现的,那么子类也必须用 abstract 修饰.抽象类默认的权限修饰符为 public,可以定义为 public ...

  10. 基于 TrueLicense 的项目证书验证

    一.简述 开发的软件产品在交付使用的时候,往往有一段时间的试用期,这期间我们不希望自己的代码被客户二次拷贝,这个时候 license 就派上用场了,license 的功能包括设定有效期.绑定 ip.绑 ...