七年Java开发的一路辛酸史:分享面试京东、阿里、美团后的心得
xsobi 2025-01-07 16:46 1 浏览
前言
我觉得有一个能够找一份大厂的 offer的想法,这是很正常的,这并不是我们的饭后谈资而是每个技术人的追求。像阿里、腾讯、美团、字节跳动、京东等等的技术氛围与技术规范度还是要明显优于一些创业型公司 / 小公司,如果说能够在这样的公司锻炼几年,相信对自己能力的提升还是非常大的。不论是校招还是社招都避免不了各种面试、笔试,如何去准备这些东西就显得格外重要。不论是笔试还是面试都是有章可循的。
因为大厂面试一般都有专业团队负责,某个知识点你到底是掌握了还是单纯背下来,面试官一问就可以看出来(PS:真正到面试特别是你觉得准备面试的时间不够的时候,你可以多挑一些面试常问的问题来看,注意理解,一定不要死记硬背)。一定不要过分寄希望于各种面经,试着去提高自己的综合能力。
“ 80% 的 offer 掌握在 20% 的人手 ” 中这句话也不是不无道理的。决定你面试能否成功的因素中实力固然占有很大一部分比例,但是如果你的心态或者说运气不好的话,依然无法拿到满意的 offer。运气暂且不谈,就拿心态来说,千万不要因为面试失败而气馁或者说怀疑自己的能力,面试失败之后多总结一下失败的原因,后面你就会发现自己会越来越强大。
从大厂实际招聘要求来看到底青睐什么样的人?
首先要明确的一点是:985/211 的学历的确会为你加分很多。
另外,再强调的一点是不要天天把自己的学校是双非学校这个接口当做你无法进入大厂的原因。只要你的能力足够,大厂的大门就会为你打开。也有着很多双非学校甚至是三本的同学就拿到像阿里、腾讯这样的大公司的 offer。
从阿里、腾讯等大厂招聘官网对于 Java 后端方向/后端方向的要求,我们大概可以总结看出大厂对招聘者的能力要求。
下面以阿里巴巴为例子,看看大厂的实际要求
在面试 Java 工程师的时候,下面几点也提升你的个人竞争力:
熟悉开源框架的底层,阅读源码;
大型数据库系统经验;
熟悉分布式,缓存,消息中间件;
良好的表达和沟通能力, 善于学习, 关注前沿。
“ 一定要有一门自己的特长,不管是技术还好还是其他能力 ” 。我觉得这句话真的非常有道理,大家可以仔细思考一下。在这里再强调一点:公司不需要你什么都会,但是在某一方面你一定要有过于常人的优点。换言之就是我们不需要去掌握每一门技术(你也没精力去掌握这么多技术),而是需要去深入研究某一门技术,对于其他技术我们可以简单了解一下。
我觉得比起你对每一门技术都是浅尝辄止,深入吃透某一门技术对你的个人竞争力提升才更有帮助。
如何获取大厂面试机会?
在讲如何获取大厂面试机会之前,先来对比一下两个非常常见的概念——春招和秋招。
招聘人数:秋招多于春招 ;
招聘时间: 秋招一般 7 月左右开始,大概一直持续到 10 月底。但是大厂(如 BAT)都会早开始早结束,所以一定要把握好时间。春招最佳时间为 3 月,次佳时间为 4 月,进入 5 月基本就不会再有春招了(金三银四)。
应聘难度:秋招略大于春招;
招聘公司:秋招数量多,而春招数量较少,一般为秋招的补充。
综上,一般来说,秋招的含金量明显是高于春招的。
下面我就说一下我自己知道的一些方法,不过应该也涵盖了大部分获取面试机会的方法。
关注大厂官网,随时投递简历(走流程的网申);
找到师兄师姐或者认识的前公司的技术牛人,帮忙内推(能够让你避开网申简历筛选,笔试筛选,还是挺不错的,不过也还是需要你的简历够棒);
求职类网站投递简历(不是太推荐)。
除了这些方法,我也遇到过这样的经历:有些大公司的一些部门可能暂时没招够人,然后如果你的亲戚或者朋友刚好在这个公司,而你正好又在寻求 offer,那么面试机会基本上是有了,而且这种面试的难度好像一般还普遍比其他正规面试低很多。
想要取得一份自己满意的 offer,前提是自己要有过硬的实力作为资本,下面就如何提高个人硬实力给大家提几点建议!
如何提高个人硬实力及大厂 Java 后端面试主要问些什么??
我在这里所说的个人硬实力更多的指的是个人的专业能力,比如构建高质量网站的能力或者是对专业知识的掌握程度。
我觉得不论是对于新手还是老手,想要提高个人硬实力最重要的就是不断深入学习并且将理论实践,最好可以将理论在具体项目中实践一下。
想要提高个人硬实力,那么学习一门新技术的方法一定是至关重要了。下面分享一下《 Java 工程师修炼之道》一书对于学习一门新技术的一些要点(在这以图片的方式整理了出来,更加方便阅读):
一定要有自己的技术优势,可能你懂得不是最多的,但是别人不会的你却会,那么你就是厉害的!然而如何准备大厂面试?我觉得最关键的一点之一就是搞清楚大厂面试主要在问些什么。下面我将分解每一个知识点,给大家简单说一下大厂面试主要会问些什么?
首先你要明确的是面试官所问的内容一定和你简历所写的东西是紧密联系的,一般你没有记录简历上的技能,面试管很少会去提问。
大厂面试大体上包括下面几方面知识类型:
Java 基础、多线程、IO 与 NIO、虚拟机、设计模式
面试官在多线程这一部分很可能会问你有没有在项目中实际使用多线程的经历。所以,如果你在你的项目中有实际使用 Java 多线程的经历 的话,会为你加分不少哦!
设计模式比较常见的就是让你手写一个单例模式(注意单例模式的几种不同的实现方法)或者让你说一下某个常见的设计模式在你的项目中是如何使用的,另外面试官还有可能问你 “ 抽象工厂 ” 和 “ 工厂方法模式的区别 ” 、“ 工厂模式 ” 的思想这样的问题 ” 。
建议把代理模式、观察者模式、(抽象)工厂模式好好看一下,这三个设计模式很有用。
数据结构与算法(要有手写算法的能力)
数据结构比较常问的就是:二叉树、红黑树(很可能让你手绘一个红黑树出来哦!)、二叉查找树(BST)、平衡二叉树(Self-balancing binary search tree)、B - 树,B + 树与 B * 树的优缺点比较、 LSM 树这些知识点。数据结构很重要,而且学起来也相对要难一些。建议学习数据结构一定要循序渐进的来,一步一个脚印的走好。一定要搞懂原理,最好自己能用代码实现一遍。
计算机网络(TCP 三次握手和四次挥手)
数据通信(RESTful、RPC、消息队列)
如果你的简历上写了你会某个RPC框架(比如:阿里的开源的dubbo)或者消息队列(比如:RabbitMQ、Kafka)的使用的话,面试官一般会以你写在简历上的技术提问,回答的时候最好能结合在项目中的实际使用。
性能优化及操作系统(常见优化方式,Linux 的基本命令以及使用)
主流框架(Spring 底层原理与源码问的很多)
Spring一般是不可避免的,如果你的简历上注明了你会 Spring Boot 或者 Spring Cloud 的话,那么面试官也可能会同时问你这两个技术,比如他可能会问你 springboot 和 spring 的区别。 所以,一定要谨慎对待写在简历上的东西,一定要对简历上的东西非常熟悉。
另外,AOP 实现原理、动态代理和静态代理、Spring IOC 的初始化过程、IOC 原理、自己怎么实现一个 IOC 容器?这些东西都是经常会被问到的。
数据存储(最常见的是 MySQL、Redis)
分布式(分布式锁,事务等)
多线程并发
从架构设计,到应用层调优,再深入了解底层原理,扎实的Java基本功才能让自己变为扫地神僧:内存模型,并发模式,线程模型,锁细节等等.....
除了这些东西还有什么其他问题:
实际场景题
实际场景题就是对你的知识运用能力以及思维能力的考察。建议在平时养成多思考问题的习惯,这样面试的时候碰到这样的问题就不至于慌了。另外,如果自己实在不会就给面试官委婉的说一下,面试官可能会给你提醒一下。切忌不懂装懂,乱答一气。
面试官可能会问你类似这样的问题:
假设你要做一个银行 app,有可能碰到多个人同时向一个账户打钱的情况,有可能碰到什么问题,如何解决(锁)?
你是怎么保证你的代码质量和正确性的?
下单过程中是下订单减库存还是付款减库存,分析一下两者的优劣。
同时给 10 万个人发工资,怎么样设计并发方案,能确保在 1 分钟内全部发完。
如果让你设计 xxx 系统的话,你会如何设计。
生活
一般到最后的 HR 面的时候,面试官基本就是和你聊聊天。他可能会问你类似如下的问题:
父母是做什么的,具体一点
自己平时是如何学习的
平时的兴趣爱好是什么
性格/其他
主要是看你个人的性格以及价值观是否适合他们公司,比如他会问你类似下面的问题:
遇到压力大的情况自己是如何处理的
遇到很难解决的困难怎么办
遇到不是很喜欢同项目组的某个成员的情况怎么办
如何看待加班
你觉得自己有什么缺点/优点
总结强调
一定要谨慎对待写在简历上的东西,一定要对简历上的东西非常熟悉。因为一般情况下,面试官都是会根据你的简历来问的;能有一个上得了台面的项目也非常重要,这很可能是面试官会大量发问的地方,所以在面试之前好好回顾一下自己所做的项目;和面试官聊基础知识比如设计模式的使用、多线程的使用等等,可以结合具体的项目场景或者是自己在平时是如何使用的;建议提前了解一下自己想要面试的公司的价值观,判断一下自己究竟是否适合这个公司。
最后
针对于上面所提到的知识导图我总结出了一些架构视频资料和互联网公司java程序员面试涉及到的绝大部分面试题及答案做成了文档和架构视频资料还有完整高清的java进阶架构学习思维导图免费分享给大家(包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术资料),希望能帮助到您面试前的复习且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。
资料领取方式:转发此文关注小编私信回复【架构资料】即可
重要的事情说三遍:转发+转发+转发关注我私信回复 架构资料
相关推荐
- 什么是 XML 站点地图?为什么要有它?
-
一份好的XML站点地图可以作为您网站的路线图,引导Google找到您所有的重要页面。XML站点地图对SEO非常有利,即使您的内部链接不完美,Google也能快速找到您的重要页面。这篇文...
- springboot整合mybatis使用xml实现sql语句的查询配置
-
首先肯定还是引入mybatis依赖<!--https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-b...
- IDEA 这么设置 Maven,再也不用担心依赖下载失败了
-
Hello,大家好,我是楼下小黑哥。B站视频版本...
- WordPress网站被利用xmlrpc.php攻击解决办法
-
最近看了百度云加速后台的数据报表,发现有很多针对WordPress的攻击,其实就是利用xmlrpc.php文件来攻击。虽然目前站点一切安好,但是据说如果不采取相应措施解决的话,很有可能会被这些攻击导致...
- 看大佬对Maven讲解有多深,Maven setting.xml文件 了解一下
-
通常我们安装了Maven之后会对Mavensetting.xml(Maven的配置文件做一些自定义),本章我们将详细地学习一下Mavensetting.xml文件。文件位置一般存在与Maven安装...
- XML文档篇(二):认识 xsd 文档
-
前面介绍了基于XML的DTD,详见:XML文档篇:认识DTD(一)。今天再来分享一个它的替代者,...
- Mybatis 中xml和注解映射,分分钟搞定
-
MyBatis提供了XML配置和注解配置两种方式。今天就来搞搞这两种方式是如何实现的。...
- 您的网站需要XML站点地图吗?
-
昨天有人咨询我们:“向百度提交网站地图有多重要?”首先,让我们了解一下“XML网站地图有多重要?”您是否需要XML网站地图?...
- 详细解释Xml中的Schema约束(保姆级)
-
我本人总是爱忘记这个约束,说实话不是太难,因此想写这篇文章详细记录下,希望对有同样需要的小伙伴能够提供帮助。Xml约束主要有两种:dtd约束(比较简单)schema约束(常用、复杂)dtd约束比较简单...
- HTML和xml有哪些区别?
-
HTML和XML都是用于描述和组织数据的标记语言,但它们之间有着许多区别。本文将详细介绍HTML和XML的区别,包括语法、标记、应用场景等方面。一、语法差异...
- 开源XML数据库 BaseX
-
BaseX是一个开源的XML数据库系统,包括一个前端用户操作管理界面XQueryEditor。提供高效的XPath和XQuery处理,包含了对W3CUpdate和FullText扩展的全...
- 一篇文章让你弄清楚XML文件的规范与使用
-
可扩展标记语言(ExtensibleMarkupLanguage,简称XML)是一种标记语言。所谓的标记是指计算机所能理解的信息符号,通过标记可以实现软件开发者与计算机之间的信息沟通。我们常见的H...
- Python 3 实现在线xml sitemap索引文件提取URL到指定文件
-
毫无疑问,在SEO分析网站结构和开放搜索引擎端抓取页面数时,对sitemap文件的分析是最好的入手点。通常规模不是太小的网站URL数量都会超过5万条,而搜索引擎要求单个sitemap文件的数量不能超过...
- 从零开始学Java之带你学会解析XML文件
-
一.XML简介1.概念XML(ExtensibleMarkupLanguage,可扩展的标记语言),作为一种标记语言,它是标准通用标记语言的子集。XML给我们提供了可扩展性和自定义标签的特性...
- 解除 网课失去焦点/离开页面 就自动暂停 的限制
-
用代码解决实际生活中的问题h5如果视频是video元素,可以写个定时器,每秒钟设置一下播放状态...
- 一周热门
- 最近发表
- 标签列表
-
- grid 设置 (58)
- 移位运算 (48)
- not specified (45)
- patch补丁 (31)
- 导航栏 (58)
- context xml (46)
- scroll (43)
- dedecms模版 (53)
- c 视频教程下载 (33)
- listview排序 (33)
- firebug 使用 (31)
- characterencodingfilter (33)
- getmonth (34)
- hibernate教程 (31)
- label换行 (33)
- curlpost (31)
- android studio 3 0 (34)
- android应用开发 (31)
- html转js (35)
- 索引的作用 (33)
- css3 0 (31)
- checkedlistbox (34)
- localhost 8080 (32)
- 多态 (32)
- xmlhttp (35)