信息来源:https://jiuye.uestc.edu.cn/career/news/newDetail.html?id=648
大家好,我是来自信息与软件工程学院的一名应届毕业生,今年秋招有幸拿到了华为通用软件开发工程师的offer。在这个过程中,我得到了很多同学的帮助,正是这些帮助使得我的秋招面试比预想中的要顺利的多。
本着“人人为我,我为人人”的原则,在这里抛砖引玉,献上面经一篇,希望对大家有所帮助。所谓面经,即是个人面试的一些经验总结,由于我本人的方向是JAVA后端,所以整篇面经偏向于JAVA相关,其中对于其他方向的学习难免有疏漏之处,所以最后大家能够根据自己的实际情况进行查缺补漏,这样才能得到真正的提升。
本篇面经主要分为知识点的学习,以及面试建议两部分。
1 知识点的学习
首先是后端开发通用知识点,其中包括:数据库,计算机网络,Linux操作系统,部分网络安全知识。
数据库:建议先将学校的教材《数据库原理及应用》中的事务隔离,数据库设计以及SQL语句的相关知识进行精读,有精力的同学建议学习针对特定数据库内部原理进行学习,就我本人而言由于实习过程中使用的是MYSQL,所以我读了《高性能MYSQL》来对数据库内部原理进行理解。针对mysql常见问题基本为索引种类和原理以及索引应用上,应该有针对的进行学习。
计算机网络:由于是后端开发,所以计算机网络是重中之重,但是相对而言计算机网络原理的相关知识并没有那么繁杂,只要通读教材《计算机网络自顶向下方法》即可,面试问题主要集中在TCP和UDP实现上。
Linux操作系统:绝大多数的服务器都采用的Linux操作系统,因此面试时大多数面试官都喜欢对Linux进行提问,推荐阅读《鸟哥的Linux私房菜》这本书,书中介绍了Linux的操作指令以及部分原理。建议对Linux原理进行深入学习,这样可以成为面试中的亮点。
网络安全:这一部分知识点如果不是专职进行网络安全相关岗位的,建议只对OWSAP TOP10中提到的问题进行了解即可,了解其危害以及解决措施,属于面试中加分项。
其次JAVA后端方向的知识点,主要包括: java基础,容器,多线程相关,虚拟机,面向对象设计模式。
JAVA基础:基础知识方面可以阅读《JAVA编程思想》,书中针对JAVA各种基础知识都有深入的介绍,这一部分是属于面试中必须答好的部分,否则面试官的印象分会下降很多。
容器:这部分建议先对java中的容器结构有一个整体认识,然后通过阅读源码来进行学习,面试中这部分大多会深入到源码层面,重要的是源码编写者在源码中体现的思想。
多线程:多线程相关知识建议阅读《并发编程的艺术》,其中从CPU层面对JAVA多线程相关知识进行了深入介绍。
虚拟机:《深入理解Java虚拟机》几乎囊括了所有虚拟机相关的知识点,这部分主要是对java的加载运行过程进行了解。重点掌握GC相关的知识以及虚拟机的各部分构造。
设计模式:这部分建议广泛理解所有设计模式,并深入了解特定的几种,这不仅仅是对于面试的准备,也对以后编码过程颇有益处。这里推荐书籍《Effective Java》,虽然这本书不是讲设计模式的,但它其中提到的很多思想都很重要。
算法:其实这部分没有什么好说的,面试时想要顺畅的手撕算法题,最好的方法就是刷题,刷《剑指offer》,刷leetcode,针对每种题型进行总结,写出自己的解题风格(PS:但是现场解动态规划题还是需要运气)。
2 面试建议
首先先说面试信息的获取,学校就业网、牛客网以及各种招聘公众号都是最好的信息获取源。
然后再说说面试,面试是一个积累的过程,这其中最重要的便是不要放弃,每个人刚开始面试时都或多或少的有些问题,一次次的面试就是一次次经验的积累,每次面试结束后建议对本次面试进行总结,对没答上或者没答好的知识点进行重点学习。
同时在面试过程中,如果真的无法想起相关答案,可以适当的向面试官寻求提示,但注意如果问的过多可能会提前终结面试。
在知识点学习的过程中应该针对面试中可能遇到的扩展问题进行相关学习,当面试被问时能够更好的将话题引至你准备过的方面,将面试节奏把握在自己手里。
在面试过程中记得时刻保持谦逊的态度,在面试最后问问题时,最好能表现出好学的一面,表现出对项目组所做项目的兴趣。
CONTENT END