为了准备学院大三下学期6个月的实习,自己投递了一些公司的Java的开发岗并参加了面试,主要有百度、SAP、新浪微博、京东数科... 由于我大一大二的时候并没有真正地接触到技术,所做的项目也是少之又少,也就局限于学院里安排的一些课程设计,从准备简历到投简历到再修改简历再面试来来回回折腾了不少次,踩过的坑也算是引以为戒。接下来我主要从简历制作、准备面试、面试真题、经验教训这几个方面来说(实习生的身份)
简历制作
简历看似是一个简单的事情,但是对于求职来说是至关重要的一环,因为简历制作的好坏决定着你能否经过HR的筛选拿到面试的资格以及决定着面试过程中面试官提问的大多数问题。我主要提供一个简历的制作思路
- 个人信息:姓名、年龄、联系方式、邮箱、住址、个人博客、GitHub地址(做的好的话,绝对的加分点)等
- *** 专业技能**:
- 无论是实习生还是将来找工作,都慎用**"精通"**二字
- 有的同学可能不知道该怎样写自己的技能点,就用短短的一句比如“熟悉Java开发”就描述完了,那么这样的简历太过笼统肯定是缺少亮点的,即使有可能你确实很厉害,但也有可能拿不到面试的资格。如果没有思路,可以去招聘网站去看下具体投递岗位的技能需求,适当地包装技能,可以将技能点进一步细化。比如“熟悉Java开发”我就可以延伸到:Java基础较好、熟悉Java并发编程、IO模型、深入理解集合框架等等。我这里只是简单举个例子,具体情况根据个人掌握的程度来进行确定。包装上去的技能点一定要能经地住面试官的提问,很难的问题也许不会,但基础性的问题一定要非常熟悉
- 教育背景:学校+专业。如果在校成绩较好,也可列一些具体的数据上去,作为在校生这也算是一个亮点
- 获奖经历:奖学金、比赛获奖等等 如果比赛比较突出专业性的技能,可以稍作详细描述,这也是绝对的加分点
- *** 项目经验**
- 尽量写和你要应聘岗位相关的项目经历,不一定要写上去所有的项目,如果某个项目你觉得自己说不清楚的话就不要写上去,有的面试官会很关心项目问题,问的很深,所以**“不熟悉的项目慎重”**
- 写上去的项目进行包装:项目背景可不用介绍,介绍这个项目实现的功能,你在这个项目中负责哪一部分的开发?用了什么技术解决了什么问题?达到了怎样的预期效果?(如果有具体的数据做支撑将会更棒)你对于这个项目的思考?(这个可以不用具体写在简历上,当面试官让你谈这个项目的时候也许会问到你,如果遇到某种场景,这个项目可以应对吗?如果不可以又有哪些办法解决?这个要有个心理准备)
- 不过分包装,作为实习生的身份,面试官也能理解我们在学校项目经历的不足,如果你的基础知识及技能足够好的话,那也是OK的
- 自我评价:简短的一段自我评价,最好有具体例子做支撑
简历不用太长,1-2页即可,PDF格式
实习的话,投递简历渠道推荐几个:BOSS直聘、牛客网、实习僧以及找人内推会比较快而且知道简历处理的进度
总结一点: 适当包装,切忌过度包装
准备面试
当投递完简历后,一定要保证手机在正常工作日时间的通畅,一般自己联系企业,会有HR给你打电话约面试的时间,面试的形式主要是:视频面试、电话面试、现场面试(一般是本地的公司会约你现场面试)在约好具体面试时间后,就要开始面试的准备
复习
具体岗位的不同,复习方法也有所区别,我们去看实习招聘岗位的分布情况,主要是算法研发岗、前后端研发岗、测试岗等。作为一个实习生(在校)主要复习的思路主要有:
-
数据结构与算法
重中之重,无论是什么岗位(算法、研发、测试等)都会进行考察,常见的一些算法要能够手写出来
常见面试题:数组、链表、树遍历算法、DFS、BFS、查找、排序等
-
计算机网络(前端开发和后端开发必问)
常见面试题:TCP、UDP区别、 TCP三次握手、四次挥手流程及为什么三次为什么四次?DNS协议相关...
-
操作系统基础
常见面试题:主要是涉及到并发编程的话,处理机的调度(进程、线程、死锁等)常问...
-
数据库原理(后端开发必问,前端开发偶有问到)
常见面试题:数据库索引、数据库范式、数据库事务管理(ACID)、SQL优化思路...
-
投递具体岗位的技能要求,这里有一点,岗位上明确要求的技能基本都会被问到,所以要做一些针对性复习,然后这时可以去GitHub或者牛客网再找找面经看看
-
项目,在这里复习项目中的技能点我觉得是很有必要的,因为和面试官谈论项目问题时,大多数面试官就会以你当前的项目中的技能点进行发问
-
测试岗位有必要将软件工程再好好复习一遍
对于公共基础课的复习,这里分享一个公众号文章可以进行适当突击-->Click
面试流程
一般实习的话,面试3轮(2轮技术面试+1轮HR面试)
这里主要谈论技术性面试
面试流程主要是
- 1-2分钟自我介绍
- 面试官从项目说起,让你介绍你的项目,这期间面试官会提问
- 基础知识和技能的提问,一般10个问题左右
- 如果是视频面试和现场面试,有很大可能性现场出算法题目让你写代码(尤其想去字节跳动的话,每轮面试都会有算法题目,做不出来基本是一票否决的),电话面试也不排除让你进行描述
- 面试结束前,面试官都会问:你还有什么要问我的吗?(这个问题提前做点准备就好)这里推荐大家看一下--> Click
面试真题
由于我接到的面试都是Java开发相关的,我主要对面试中遇到的CS公共基础课和Java相关知识进行总结
数据结构与算法篇
- B树和B+树的区别(新浪微博)
- 你了解哪些排序算法?算法的思想、时间复杂度、空间复杂度?(京东数科)
- LeetCode第1题及第15题:两数之和及三数之和问题(新浪微博)
计算机网络篇
- TCP三次握手、四次挥手流程?为什么三次,为什么四次?(新浪微博、百度)
- TCP和UDP区别,有TCP为什么还要有UDP?(百度、京东数科)
- TCP粘包和拆包问题有了解吗?(新浪微博)
- TCP是怎样保持连接的?(京东数科)
操作系统篇
- 并发编程中死锁有了解吗?死锁产生的条件是什么?你在项目中是怎样解除避免和解除死锁的?(百度)
- 进程的都有哪些状态?怎么转换的?(新浪微博)
- Linux下文件的操作命令(京东数科)
数据库篇
- 数据库范式了解吗?在项目中怎么运用的?会出现什么问题?(新浪微博、SAP、京东数科)
- MySQL中编码遇到过什么问题吗?为什么不选UTF-8编码选UTF-8mb4?(SAP)
- MySQL数据库索引?底层是怎么实现的?(京东数科、新浪微博)
- MySQL中存储引擎InnoDB和MyISAM有什么区别?分别用于什么场景?(新浪微博)
- 数据库事务有了解吗?事务的隔离级别?你在项目中使用的隔离级别是什么?(新浪微博)
- SQL优化有什么思路?(新浪微博)
- 项目中使用到外键了吗?外键作用?使用外键要注意些什么问题?(新浪微博)
- 除了MySQL数据库你还用到哪些数据库?Redis数据库和MySQL数据库的区别?(新浪微博)
- 现场出题设计一个数据库表(百度)
Java篇
- 类和对象的区别?(百度)
- 单例设计模式了解吗?有几种写法?手写一个单例设计模式(百度)
- 讲讲static关键字和final关键字(百度)
- synchronized关键字是怎么用的?底层实现有了解吗?还有用过其他的锁吗?(百度)
- BIO、NIO、AIO区别有哪些?项目中有用到吗?Netty?(百度、新浪微博)
- 接口和抽象类的区别?什么时候用接口,什么时候用抽象类?接口可以继承接口吗?(京东数科)
- HashMap和HashTable的区别是什么?(京东数科)
- ConcurrentHashMap和HashMap的区别是什么?ConcurrentHashMap为什么线程安全?(新浪微博)
- HashMap和HashSet的区别?HashSet是如何检查重复的?(新浪微博)
- Java中线程的状态?*join()、yield()*方法是干什么?(新浪微博)
- Object类下有哪些方法?(京东数科)
- 字符串"123"转换成整型123的API是什么?整型123转换成字符串“123”的API又是什么?(京东数科)
- 创建线程有几种方式?分别是怎么做的?(京东数科、新浪微博)
- 线程池用过吗?如何创建一个线程池?其中各个参数的含义是什么?为什么要用线程池?coreSize?(新浪微博)
- synchronized、ReentrantLock区别?(京东数科)
- CountDownLatch和Semaphore用过吗?他们的区别是什么?CountDownLatch应用场景?比如现在要让第5个线程等待前4个线程执行完毕再执行,具体怎么做?(新浪微博)
- 使用synchronized来实现单缓冲区的生产者消费者模型的代码思路?(新浪微博)
- JVM有了解吗?JVM中参数
–Xms
和-Xmx
是什么意思?(新浪微博) - 设计模式有了解过哪些?单例设计模式知道哪几种写法?策略设计模式了解吗?你在项目中用到了哪些设计模式?(京东数科、新浪微博)
- Spring中依赖注入有几种方式?怎么做的?(京东数科)
- Spring框架中有哪些组件了解吗?分别做什么的?(新浪微博)
- SpringMVC的这种MVC模式了解吗?他的工作原理是什么?用到了哪些设计模式?(京东数科、百度)
- SpringMVC中要接受用户传来的参数要怎么做?REST的风格呢?(新浪微博)
- Spring中bean的创建过程了解吗?(新浪微博)
- SpringBoot和SpringMVC的区别和联系是什么?了解SpringBoot的启动流程吗?SpringBoot自动配置是如何实现的?(新浪微博)
- 权限验证Spring Security了解吗? JPA会用吗?(SAP)
经验教训
由于这是我第一次求职的经历,从简历这一步开始就踩了很多的坑,技能描述简略,泛泛而谈,项目描述草率,没有任何一点的包装,就拿去投了很多家公司,基本都石沉大海,在几位学长的指导下修改了简历,又重新投递。我之前确实没有做过什么技术,又不甘愿去做测开,所以也是从这个学期开始才决定做Java后端的开发,很多东西也都是现学,在学技术这期间我不时地后悔大一大二没好好做技术,自己是在还债,恰逢学校的事情又很多,然后整个一个学期压力都蛮大的,我到现在都还清楚地记得等待每一个面试电话时自己心中焦灼的心情。
每一次的面试对我来说都是一次成长,放下心中的浮躁,踏踏实实地做事情。最后感谢顺佬对我Java学习的指导、俊佬对我简历的指导、谢导提供的实习信息及京东对我的肯定