5年Java后端程序员,历经38天,6轮面试,成功斩获腾讯offer

个人背景:

投稿程序员:会飞的小羊

工作经验:Java后台研发5年

学历:中南林业科技大学计算机本科

前公司:网易互娱

跳槽目标:腾讯WXG部门(内推,6面拿offer)

image

腾讯WXG部门6面(4轮技术面+1轮总监面+HR面)

4轮技术面真题

Java基础:

JAVA中的几种基本数据类型是什么,各自占用多少字节。

String类能被继承吗,为什么?

String,Stringbuffer,StringBuilder的区别。

ArrayList和LinkedList有什么区别。

讲讲类的实例化顺序,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,当new的时候,他们的执行顺序。

用过哪些Map类,都有什么区别,HashMap是线程安全的吗,并发下使用的Map是什么,他们内部原理分别是什么,比如存储方式,hashcode,扩容,默认容量等。

JAVA8的ConcurrentHashMap为什么放弃了分段锁,有什么问题吗,如果你来设计,你如何设计。

有没有有顺序的Map实现类,如果有,他们是怎么保证有序的。

数据库:

请简洁描述 MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?

在 MySQL 中 ENUM 的用法是什么?

CHAR 和 VARCHAR 的区别

列的字符串类型可以是什么?

MySQL 中使用什么存储引擎?

TIMESTAMP 在 UPDATE CURRENT_TIMESTAMP 数据类型上做什么?

主键和候选键有什么区别?

MySQL 数据库服务器性能分析的方法命令有哪些?

MySQL 数据优化。

存储引擎。

Redis 实现原理或机制。

什么是 MongoDB。

Redis、memcache、MongoDB 对比。

image.png

多线程,高并发:

stop() 和 suspend() 方法为何不推荐使用?

sleep() 和 wait() 有什么区别?

同步和异步有何异同,在什么情况下分别使用他们?

当一个线程进入一个对象的一个 synchronized 方法后,其它线程是否可进入此对象的其它方法?

简述 synchronized 和 java.util.concurrent.locks.Lock 的异同?

概括的解释下线程的几种可用状态。

什么是 ThreadLocal?

run() 和 start() 区别。

请说出你所知道的线程同步的方法。

线程调度和线程控制。

什么是线程饿死,什么是活锁?

多线程中的忙循环是什么?

volatile 变量是什么?volatile 变量和 atomic 变量有什么不同?

volatile 类型变量提供什么保证?能使得一个非原子操作变成原子操作吗?

Spring高级:

什么是 Spring 框架?Spring 框架有哪些主要模块?

使用 Spring 框架能带来哪些好处?

什么是控制反转(IOC)?什么是依赖注入?

请解释下 Spring 框架中的 IoC?

BeanFactory 和 ApplicationContext 有什么区别?

Spring 有几种配置方式?

如何用基于 XML 配置的方式配置 Spring?

如何用基于 Java 配置的方式配置 Spring?

怎样用注解的方式配置 Spring?

请解释 Spring Bean 的生命周期?

Spring Bean 的作用域之间有什么区别?

什么是 Spring inner beans?

Spring 框架中的单例 Beans 是线程安全的么?

如何向 Spring Bean 中注入一个 Java.util.Properties

image

腾讯WXG部门总监面:

看了一下你的简历,本科毕业就直接去网易了,为什么没有选择考研呢?

说一下你未来的职业规划

有没有想过转产品?还是打算一直做技术?

除了Java,还研究过其他技术吗?

看你项目用到Spring boot,那有用过Spring cloud吗

说一下你对微服务的理解,与SOA的区别

腾讯HR面:

自我介绍一下

平常怎么学习的?

有没有什么兴趣爱好

觉得自己前面几轮面试怎么样

跟我说一下你认为最具有挑战性的项目

问我还参加了什么公司的招聘

为什么想要从网易到腾讯来?你认为腾讯能够给你带来什么?

为应对一线大厂面试,我做了哪些准备?

(一)调整自己的心态,正确面对得失

面试中常见的问题,主要是心态,面试调整心态是第一位的,如何调整成最佳心态呢?很多求职者在面试过程中自己思路不清晰,语言不流畅,说话毫无逻辑,会不断否定自己,归根结底都是面试心态问题,所以调整自己的心态,正确面对得失是非常重要的,我的方法是给自己足够的心理暗示。

image

(二)提升技术,扩宽知识

对于程序员来说,要想成长为一名行业内的大牛大神级别的人物,那么唯一的办法就是通过学习,来不断提升自己的技术,扩宽知识,达到一定的高度和深度。那么如何提升自己的技术,扩宽自己的知识储备呢?

以下是我个人的一些做法,希望可以给各位提供一些帮助:

  • 21天啃完283页的pdf文档

**Java部分:**Java基础,集合,并发,多线程,JVM,设计模式
**数据结构算法:**Java算法,数据结构
**开源框架部分:**Spring,MyBatis,MVC,netty,tomcat
**分布式部分:**架构设计,Redis缓存,Zookeeper,kafka,RabbitMQ,负载均衡等
**微服务部分:**SpringBoot,SpringCloud,Dubbo,Docker

image

  • 实战系列:Spring全家桶+Redis等

image

  • 其他相关的电子书:源码+调优

image

(三)刷题

如何刷题?这是很多现在面试者心中的困惑,我们都知道,面试前刷题是很有必要的,毕竟很多题目都有一定的共性,刷足够题目就能够做到举一反三,甚至在面试时,被问到原题,能够侃侃而谈,那么刷题如何进行呢?建议:最好找一些历年的面试原题,分专题来对自己进行训练。

以下是我私藏的面试题库:

image

结束语

对于大厂面试,我最后想要强调的一点就是心态真的很重要,是决定你在面试过程中发挥的关键,若不能正常发挥,很可能就因为一个小失误与offer失之交臂,所以一定要重视起来。另外提醒一点,充分复习,是消除你紧张的心理状态的关键,但你复习充分了,自然面试过程中就要有底气得多。

以上内容中所有的学习资料、面试资料,均可以免费提供,希望大家金三银四面试顺利,拿下自己心仪的offer!

需要的朋友:直接点击文档窗口(https://jq.qq.com/?_wv=1027&k=gLUIIwrn)免费领取~
欢迎关注专栏:Java架构进阶团。里面有大量batj面试题集锦,还有各种技术分享,如有好文章也欢迎投稿哦。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Java后端程序员可以通过以下方式来成长: 1. 不断学习和掌握新的技术和框架,如Spring, Hibernate等。 2. 完成项目,并且不断总结和提高。 3. 参加技术社区活动,和其他程序员交流和学习。 4. 阅读相关技术文章和书籍,不断提高自己的理解能力。 5. 注意代码质量和可维护性,并且不断提高自己的编码能力。 ### 回答2: 要成为一名优秀的Java后端程序员,以下是一些成长的关键点: 1. 扎实的基础知识:掌握Java语言的基础知识,如语法、面向对象编程、异常处理等。还要了解常用的数据结构和算法,以便在解决问题时能够选择合适的解决方案。 2. 学习框架和工具:深入学习常用的Java后端框架,如Spring、Hibernate等,理解它们的原理和使用方式。同时掌握常用的开发工具,如Eclipse、IntelliJ IDEA等,提高开发效率。 3. 实践项目经验:参与实际项目开发,不断积累实战经验。通过实践,了解项目开发流程、团队协作和版本控制等,同时也可以发现和解决一些实际问题。 4. 深入学习数据库:掌握常用的关系型数据库和NoSQL数据库,如MySQL、MongoDB等。了解数据库的原理和优化技巧,能够设计和优化数据库模型。 5. 持续学习和自我提升:Java后端是一个快速发展的领域,需要保持学习的热情和积极性。关注新技术和行业动态,参加技术交流活动,阅读相关书籍和文章,不断提升自己的技术水平。 6. 理解业务需求:作为一名优秀的Java后端程序员,需要与产品和需求团队紧密合作,理解业务需求并转化为可行的技术方案。同时注重与前端开发人员的协作,保证整个系统的协同工作。 7. 代码质量和可维护性:编写高质量的代码是成长的关键。注重编码规范,使用设计模式和合理的架构,编写具有可读性、可维护性和可扩展性的代码。 8. 锻炼解决问题的能力:Java后端开发过程中,经常会面临各种问题和挑战,要有解决问题的能力。培养良好的问题分析和解决思路,能够快速定位问题并给出解决方法。 总之,作为Java后端程序员,成长的关键在于持续学习、不断实践和提升自我的能力。只有通过不断地努力和不断提高,才能成为一名优秀的Java后端程序员。 ### 回答3: 作为一名 Java 后端程序员,要想不断成长,以下几点是很关键的: 1. 深入学习和掌握 Java 技术:Java 是一门广泛应用于后端开发的编程语言,了解核心概念和基础知识是成长的第一步。通过学习官方文档、书籍、在线教程等,掌握 Java 的语法、面向对象编程、多线程、集合等核心技术。 2. 实践项目经验:通过参与实际项目,积累实践经验是成长的重要途径。可以通过参与个人项目、开源项目,或者是向公司申请承担一些有挑战性的工作任务,来提升解决问题的能力和技术广度。 3. 学习框架和工具:Java 后端开发中使用了许多优秀的框架,如 Spring、MyBatis、Hibernate 等。深入了解这些框架的原理和使用方法,可以提高开发效率和代码质量。 4. 关注行业动态和技术趋势:技术日新月异,了解当前行业的动态和技术趋势对于 Java 后端程序员至关重要。可以通过关注技术博客、参与技术社区等方式,及时了解新的技术和工具,不断拓宽技术视野。 5. 不断学习和自我更新:作为一名程序员,持续学习和自我更新是非常重要的。可以通过定期参加培训课程、参与技术社区讨论、阅读技术书籍等方式,不断提升自己的技术水平和专业素养。 6. 提高解决问题的方法和思维:作为一名 Java 后端程序员,解决问题是日常工作的重要一环。要学会运用科学的方法和合理的思维来解决问题,善于分析、排查和调试代码,提高代码的可维护性和性能。 7. 不断挑战自我:面对技术难题和挑战时,不要畏惧,要积极主动地接受挑战并解决问题。通过接触一些新领域和技术,接触一些有挑战性的项目,可以不断挑战自我,从中获得成长。 总之,Java 后端程序员要想不断成长,需要不断学习新技术,实践项目经验,关注行业动态,提升解决问题的能力和思维方式,并时刻保持学习的状态和自我挑战的心态。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值