很多读者都会纠结读研还是工作,因为每个人情况不同,所以没有标准答案。就拿我和我基友现身说法吧,我们是大学同学,由于上的是双非学校,所以大家对现状都不满意。
由于我比较不喜欢上学,而且排斥考试,就想着早点混社会,一直没有考研的打算,于是折腾各种东西,同时也在学习技术,为工作做打算。
我的基友简称L吧,大二开始准备读研,在那个大部分人只知道玩的环境中,他准备竞争保研,相较于考研,事实证明这是一条正确且压力较小的路。
虽然方向不一样,但可以说,我们还算是比较有准备的人。这周他拿到了淘宝的实习offer,作为秋招的第一步;我正式工作半年,薪资涨了20%。从起步阶段的角度去看,混的都还可以。
回到第一个问题:工作还是读研?这个问题的关键在于你想要什么,你对自己是如何规划的。而不是简单的不上学和继续上学。
这篇文章主要来聊一聊L的实习面试经历,这里顺便一提,按照我的理解,实习转正的成功率比走秋招流程高很多,因为假如你能胜任职责,而且也已经融入了团队,团队就没有必要再去花精力和成本重新招人。
他的面试经历我感觉挺冗长的,时间跨度也将近一个月,分为提前交流、一面、二面、三面、交叉面、HR面。
下面是他的复盘:
目前我是研一在读,投递的岗位是Java后端的暑期实习,我是在今年2月份开始准备实习的事情,虽然简历投递的很早,但是到面试已经是3月的事情了。接下来说说我前期做的一些准备吧。
不知道为什么,今年好像很多公司都加入了笔试环节,这里就要求我们对一些算法题进行针对性的训练,这里推荐力扣和牛客的剑指offer系列,把那70多道题刷两遍,心里多少就会有点底了。其次就是对于知识点的针对性复习,这个过程就跟我们高三时的一轮复习一样,力求将知识点都过一遍,包括但不限于Java基础、数据库、计算机网络、操作系统、组成原理、框架源码、设计模式等。这些知识点可以根据网上其他人的面经针对性学习,也可以根据市面上流传的各种面试宝典针对性复习。
我是找的学长内推的,刚开始有一次交流,也不知道算不算一面,主要问了下面的东西:
1.说一下 Java 是如何加载一个类的?2.什么是双亲委派模式?3.TCP 滑动窗口了解吗?4.用的是什么数据库?说一下 mysql 的的事务隔离5.InnoDB/MYINSAM 的区别和应用场景 6 介绍下 MYSQL 的索引6.进程和线程的定义7.进程调度算法有哪些?8.说一下你对线程池的理解9.用过什么模式(除了 JDK 以外。自己实现的 /除了单例模式外)10.单例模式为什么要有两个 null 判断,一个不可以吗?11.排序(归并排序 /堆排序/快排)12.说一下你对 Spring 的理解,AOP 的原理是什么?13.有什么想问面试官
然后就是正式的一面了,一面比较细致,上来先做了一道算法题,题目很简单,剑指 offer 里的原题,顺时针打印矩阵,https://leetcode-cn.com/problems/shun-shi-zhen-da-yin-ju-zhen-lcof还有道多线程编程题,大致意思就是提供一个多线程的工具类,打印数组。
下面是问题的记录:
1.自我介绍、说一下最近在做什么事?2.可以跟我介绍下卷积神经网络吗?3.可以说一下逻辑回归是什么吗?4.你觉得反向传播和动态规划之间有什么样的联系吗?5.你能说一下为什么计算机会使用二进制,而我们人类会使用 10 进制呢?6.计算机是怎么做加法的?那如何用加法代替减法?7.使用过 Linux 吗?可以说下常用的 Linux 命令吗?8.用什么命令可以查询文本中的文字?用什么命令可以查询磁盘存储的容量?9.Vim 使用过吗?可以说下有哪些快捷键吗?10.我看你的博客里有一篇博客写到了区块链,你可以说下去中心化对我们的生活有什么影响吗?你觉得区块链有价值吗?11.在区块链的世界中,那些数据怎么样会变得有效?12.类比打电话,两个系统的通信我们可以采用哪些方式?13.说一下 HTTP 和 HTTPS 的区别14.HTTPS 中用了什么加密方式,在什么阶段体现的?15.分布式的 CAP 理论了解过吗?16.你了解的一些集群有哪些选举方式?17.公众号里写了很多和 python 有关的文章,那你觉得这两个语言使用起来有什么差异?18.最近有看什么书吗?19.HashMap 为什么线程不安全?是否模拟过不安全的场景?20.说一下 Java 的值传递和引用传递21.SpringBoot 和 SpringMVC 的区别22.说一下 Spring 中 bean 的加载过程23.JVM 的垃圾回收器了解吗?垃圾回收算法有哪些?JDK8 默认的垃圾回收器是什么?24.有什么想跟我沟通的吗?
不知道为什么,总觉得二面问的问题和一面比起来侧重点是平常学习生活中的,而不是基础知识了。
1.自我介绍2.自己做的 app 上线了吗?是自己做的吗?简单说一下3.学校的课程中你觉得哪一门学的最好?(都差不多)4.你学习了挺久的 Java,对于这门语言有什么认识?或者和其他编程语言比起来有什么不一样5. 的地方?5.那你在学习的过程中有什么事情会让你坚持做下去?6.开发这个 app 的动力是什么?7.有参加过什么学科竞赛吗?8.数据结构你觉得你学的怎么样?做一道编程题(用数组模拟一个栈)9.智力题:你雇佣一个工人,他每天工作应该获得一份金条,你有一根金条可以分成 7 份,但你只能对你的金条切 2 刀,请问怎么保证你的工人每天都得到一份金条?10.你有什么想问我的?
到了三面,基础知识问的不如前面几轮了,更多的是项目经验方面的东西,说实话这里也是我欠缺的地方,面试的问题如下:
1.介绍一下项目2.项目是否复盘,如果说用户量/数据量/访问量非常大之后,你了解到的可以做哪些改造?3.SpringBoot 有深入了解吗?和 Spring Cloud 有什么差别吗?4.SpringBoot 核心框架包含什么?SpringCloud 一套微服务的框架中间有什么部分你是比较熟悉的,详细介绍一下。5.SpringBoot 容器启动的大致流程6.SpringCloud 在 SpringBoot 的基础上扩展了什么?7.多线程,几种线程的创建方式,使用的时候有什么场景约束8.多线程情况下临界区的资源保护有哪些方式?9.场景编程题10.不考虑高并发/分布式/集群/网络调用等问题,不依赖消息队列/缓存这些东西。希望你可以提供一个医院类,这个类有一个核心的方法给外部调用,这个方法实现如下功能:5 个医生,每个医生可以挂 10 个号,然后医院有 10 个窗口,也就意味着同时只能有 10 个病人挂号,那第 11 个人要挂号的话就不能立刻拿到号,得前面的用户挂完号才可以挂号,病人挂号的时候,医院给病人返回的结果是:1. 如果当前有空余号可用,就取最前的号;2. 如果没有号,就给调用的病人返回没有号的错误。注意:如果有号的话是不能允许返回给病人说没号,如何设计这个类以及这个类中的方法。(附加:如果在分配号的时候偶然出现时间抖动,你该怎么解决)
三面结束,慌张了几天之后迎来了交叉面,我看牛客网上的帖子说交叉面基本上就不刷人了,但还是有些担心,可能我运气比较好吧,简单问了我一些问题就结束了,没有太刁难我:
1.你可以讲一下做的最有成就感的项目吗?2.这个项目是如何变现,如何带来价值?3.是如何吸引用户的?怎么获取用户增长的数据?4.那如果重新接收这个项目有什么想法吗?5.之后对自己有什么规划吗?6.你对手淘有什么样的认知?(产品很优秀,团队的技术能力也很强)7.还有什么要问的?
隔了两天接到了hr的电话,前面几轮面试都拖了挺久的,hr这里反倒比较快了,问的问题也很正常:
1.有没有帮助他人的案例可以分享一下的吗?2.你是怎么规划你未来的职业方向的呢?3.对于以下案例,你有什么想法?商家在我们这进货,为了加快货物的流通,会有赊账,在这个过程中,用户增长非常快,然后需要做一个系统,在这个系统上线的前一周,运营过来说,我们需要加一个子功能,你作为技术,是选择将原版本上线之后再升级,还是说把新系统的功能全部做完了再上线?(我选的第一个) 那按照第一个方法做了,系统也上线了,后期升级的时候你本以为2个星期就可以升级完成,但是你突然发现你可能搞不定,数据上出现了一些问题,产品经理此时也在国外,没办法及时沟通,作为一个技术人员你会怎么办?4.大概什么时候可以实习?实习地点?
hr面更多的就是看看这个人的一些性格特点以及遇到一些事情时的处理方式,大多数人走到这一步基本只要回答的不太有偏差应该都不会有太大的问题的。