不论是校招还是社招都避免不了各种面试、笔试,如何去准备这些东西就显得格外重要。不论是笔试还是面试都是有章可循的,我这个“有章可循”说的意思只是说应对技术面试是可以提前准备。我其实特别不喜欢那种临近考试就提前背啊记啊各种题的行为,非常反对!我觉得这种方法特别极端,而且在稍有一点经验的面试官面前是根本没有用的。建议大家还是一步一个脚印踏踏实实地走。
运筹帷幄之后,决胜千里之外!不打毫无准备的仗,我觉得大家可以先从下面几个方面来准备面试:
1.自我介绍。(你可千万这样介绍:“我叫某某,性别,来自哪里,学校是那个,自己爱干什么”,记住:多说点简历上没有的,多说点自己哪里比别人强!)
2.自己面试中可能涉及哪些知识点、那些知识点是重点。
3.面试中哪些问题会被经常问到、面试中自己改如何回答。(强烈不推荐背题,第一:通过背这种方式你能记住多少?能记住多久?第二:背题的方式的学习很难坚持下去!)
自己的简历该如何写。
“80%的offer掌握在20%的人手中”这句话也不是不无道理的。决定你面试能否成功的因素中实力固然占有很大一部分比例,但是如果你的心态或者说运气不好的话,依然无法拿到满意的 offer。运气暂且不谈,就拿心态来说,千万不要因为面试失败而气馁或者说怀疑自己的能力,面试失败之后多总结一下失败的原因,后面你就会发现自己会越来越强大。
另外,大家要明确的很重要的几点是:
1.写在简历上的东西一定要慎重,这可能是面试官大量提问的地方;
2.大部分应届生找工作的硬伤是没有工作经验或实习经历;
3.将自己的项目经历完美的展示出来非常重要。
笔主能力有限,如果有不对的地方或者和你想法不同的地方,敬请雅正、不舍赐教。
一些不错的开源项目推荐
Github 上有很多对面试/学习Java非常有帮助的仓库,我已经将一些常见都列在了下面:
Java
JavaGuide:【Java 学习+面试指南】 一份涵盖大部分 Java 程序员所需要掌握的核心知识。
CS-Notes:技术面试必备基础知识、Leetcode 题解、后端面试、Java 面试、春招、秋招、操作系统、计算机网络、系统设计。
advanced-java:互联网 Java 工程师进阶知识完全扫盲:涵盖高并发、分布式、高可用、微服务、海量数据处理等领域知识。
miaosha: 秒杀系统设计与实现.互联网工程师进阶与分析。
architect-awesome:后端架构师技术图谱。
toBeTopJavaer:Java 工程师成神之路 。
tutorials:该项目是一系列小而专注的教程 - 每个教程都涵盖 Java 生态系统中单一且定义明确的开发领域。 当然,它们的重点是 Spring Framework - Spring,Spring Boot 和 Spring Securiyt。 除了 Spring 之外,还有以下技术:核心 Java,Jackson,HttpClient,Guava。
JCSprout:处于萌芽阶段的 Java 核心知识库。
JavaFamily:【互联网一线大厂面试+学习指南】进阶知识完全扫盲。
JGrowing:Java is Growing up but not only Java。Java 成长路线,但学到不仅仅是 Java。
数据结构/算法
LeetCodeAnimation:Demonstrate all the questions on LeetCode in the form of animation.(用动画的形式呈现解 LeetCode 题目的思路)。
TheAlgorithms-Java:All Algorithms implemented in Java。
初中级 Java 程序员必须掌握的知识。
具体的技能要求要看你应聘的公司!
1.熟练掌握数据结构、算法、操作系统、计算机网络等基础知识
2.熟练掌握Java编程、熟悉Java高并发开发手段、对JVM 虚拟机(Java内存区域、虚拟机垃圾算法、虚拟垃圾收集器、JVM内存管理)有一定研究
3.熟练掌握SOA分布式系统开发,具有优化系统性能、提高系统并发量以及系统可用性的实际经验
4.熟练掌握Struts2、Spring、Hibernate、Mybatis 等框架的使用,熟悉 Spring 原理
5.熟练掌握Dubbo、Zookeeper、常见的消息队列(比如ActiveMq)的使用
6.熟悉Linux 系统的使用,在Linux系统下具有实际的开发经验
7.熟悉MySQL数据库的使用、常见SQL语句的书写以及常见的优化手段
8.掌握 Spring Boot +Spring Cloud +Docker
9.了解Hadoop 生态相关技术中的 HDFS、Storm、MapReduce、Hive、Hbase
如何获取大厂面试机会?
在讲如何获取大厂面试机会之前,先来给大家科普/对比一下两个校招非常常见的概念——春招和秋招。
招聘人数:秋招多于春招 ;
招聘时间: 秋招一般7月左右开始,大概一直持续到10月底。但是大厂(如BAT)都会早开始早结束,所以一定要把握好时间。春招最佳时间为3月,次佳时间为4月,进入5月基本就不会再有春招了(金三银四)。
应聘难度:秋招略大于春招;
招聘公司:秋招数量多,而春招数量较少,一般为秋招的补充。
综上,一般来说,秋招的含金量明显是高于春招的。
下面我就说一下我自己知道的一些方法,不过应该也涵盖了大部分获取面试机会的方法。
1.关注大厂官网,随时投递简历(走流程的网申);
2.线下参加宣讲会,直接投递简历(相比于线上投递成功的几率会高很多!);
3.找到师兄师姐/认识的人,帮忙内推(能够让你避开网申简历筛选,笔试筛选,还是挺不错的,不过也还是需要你的简历够棒);
4.博客发文被看中/Github优秀开源项目作者,大厂内部人员邀请你面试;
5.求职类网站投递简历(不是太推荐,适合海投)。
面试的时候应该穿什么?
穿西装、打领带、小皮鞋?NO!NO!NO!这是互联网公司面试又不是去走红毯,所以你只需要穿的简单大方就好,不需要太正式。
面试前有哪些需要注意的地方?
1.提前准备好自我介绍;
2.随身带上自己的成绩单和简历(有的公司在面试前都会让你交一份成绩单和简历当做面试中的参考);
3.如果需要笔试就提前刷一些笔试题;
4.花时间做一些逻辑题和智力题(面试中发现有些公司都有逻辑题或者智力题测试环节,并且都把逻辑提或者智力题成绩作为很重要的一个参考);
5.准备好自己的项目介绍;
6.面试之前做好定向复习(所谓定向复习就是专门针对你要面试的公司来复习。比如你在面试之前可以在网上找找有没有你要面试的公司的面经);
怎么自我介绍比较好?
从HR面、技术面到高管面/部门主管面,面试官一般会让你先自我介绍一下,所以好好准备自己的自我介绍真的非常重要。网上一般建议的是准备好两份自我介绍:一份对hr说的,主要讲能突出自己的经历,会的编程技术一语带过;另一份对技术面试官说的,主要讲自己会的技术细节,项目经验,经历那些就一语带过。
我这里简单分享一下我自己的自我介绍的一个简单的模板吧:
面试官,您好!我叫某某。大学时间我主要利用课外时间学习某某。在校期间参与过一个某某系统的开发,另外,自己学习过程中也写过很多系统比如某某系统。在学习之余,我比较喜欢通过博客整理分享自己所学知识。我现在是某某社区的认证作者,写过某某很不错的文章。另外,我获得过某某奖,我的Github上开源的某个项目已经有多少Star了。
如何介绍自己的项目?
如果有项目的话,技术面试第一步,面试官一般都是让你自己介绍一下你的项目。你可以从下面几个方向来考虑:
1.对项目整体设计的一个感受(面试官可能会让你画系统的架构图)
2.在这个项目中你负责了什么、做了什么、担任了什么角色
3.从这个项目中你学会了那些东西,使用到了那些技术,学会了那些新技术的使用
4.另外项目描述中,最好可以体现自己的综合素质,比如你是如何协调项目组成员协同开发的或者在遇到某一个棘手的问题的时候你是如何解决的又或者说你在这个项目用了什么技术实现了什么功能比如:用redis做缓存提高访问速度和并发量、使用消息队列削峰和降流等等。
如果面试官问"你有什么问题问我吗?"时,你该如何回答
几乎每一场面试,特别是HR面和高管面的时候,面试官总是会在结尾问我:“问了你这么多问题了,你有什么问题问我吗?”。不管是技术面试还是非技术面试,如果你想赢得公司的青睐和尊重,我觉得我们都应该重视这个问题。
网上提供了很多问题模板,我觉得回答这个问题重要要的就是:真诚一点,不要问太 Low 的问题。
面试官问你的优点是什么,应该如何回答?
回答这样的问题,最好能够结合你要应聘的职位来做针对性回答。一般面试官问这个问题的时候,很可能会只让你说几个你觉得最能体现你能力的优点,为了避免自己在面试过程中不知道该说自己的那些优点,你可以在面试之前好好准备一下。 面试的时候最好可以说几个你要应聘的职位所做的事情需要的优点或者说你要应聘的公司比较看重的优点(企业文化)。
面试官问你的缺点是什么,应该如何回答?
缺点肯定不能是目标岗位需要的关键能力!!!
总之,记住一点,面试官问你这个问题的话,你可以说一些不影响你这个职位工作需要的一些缺点。比如你面试后端工程师,面试官问你的缺点是什么的话,你可以这样说:自己比较内向,平时不太爱与人交流,但是考虑到以后可能要和客户沟通,自己正在努力改。
没有项目经验怎么办?
如果实在没有实际项目让你去做,我觉得你可以通过下面几种方式:
1.在网上找一个符合自己能力与找工作需求的实战项目视频或者博客跟着老师一起做。做的过程中,你要有自己的思考,不要浅尝辄止,对于很多知识点,别人的讲解可能只是满足项目就够了,你自己想多点知识的话,对于重要的知识点就要自己学会去往深出学。
2.Github或者码云上面有很多实战类别项目,你可以选择一个来研究,为了让自己对这个项目更加理解,在理解原有代码的基础上,你可以对原有项目进行改进或者增加功能。
3.自己动手去做一个自己想完成的东西,遇到不会的东西就临时去学,现学现卖。
不光要做,还要改进,改善。另外,如果你的老师有相关 Java 后台项目的话,你也可以主动申请参与进来。