引言:
“我相信每一个程序员都是为了生活而努力着的。很多人因为兴趣,从此踏上了这条‘烧脑大行动’的金桥;也有很多人因为梦想和执着,奋不顾身融入这个职业;还有很多人因为被现实逼得太无奈,不得不为自己、为家人、为未来谋这么一条坎坷的路。”
创作缘由:
一方面想分享自己的求职经验,一方面想记录总结一下目前求职行情。(不出去试一试真的不知道自己有多差,哈哈!)
背景:
本人是非重本软件工程系程序媛一枚,主要从事JAVA后端。坐标:魔都。工作已有三年之久,换过三家公司,几乎一年一次(原因我就不多说了,谁都不想频繁跳槽,无奈之举)。其实在每个待过的公司里所积累的经验,几乎就注定了以后你会走什么方向,比如我一直做B端产品,因此如果想转C端,就会很难。事实也是如此,C端互联网产品对技术要求偏高,而我对底层原理之类的东西也没有浓厚的兴趣。所以投递简历的时候,我会往我已有的经验(技术、业务)方向靠拢,C端只投递了几封。这次求职,本着稳定的目标,外包、民营、创业性质的公司都被排除在外。
投递简历:
先说一下比例吧(相对于本人,仅参考):一个月的时间(2018.4.20-2018.5.20),一共自主投递的简历共100封(筛选不是撒网),被查看的大概50封,不匹配的大概25封,约面试的大概20封,由于距离或者公司性质没参加面试的大概10封,真正到场面试的10家公司,面试通过的大概一半。所以我个人找到一份满意的工作的概率是1/20 =5%(可能真的是自己太菜了,哈哈)。求职使用的APP有:拉钩、猎聘、BOSS直聘(80%的面试都来自以上三个)、51job、智联招聘(这两个用的人太多,简历一般石沉大海)。投递时间:上午10点-11点;下午3点-4点;除了boss直聘,一般下班时间简历没人看的。
笔试:
一般上了规模的公司,都会有笔试吧,我面得10家大概有7家均有笔试。笔试刷题APP用的牛客网,巩固基础知识还是很有效的。牛客网的选择题居多。一般公司的笔试题:选择题、问答题、SQL题、编程题。选择题只能刷题了,毕竟JAVA知识点太多了,看不过来,很多基础死角,只能刷题才能知道;问答题一般还是问基础,多看书;SQL题纯靠经验了,一般不是很难,无非考察一些inner join 、group by、having这些关键字罢了;编程题,考冒泡排序之类的公司我也就不说啥了,正常一点的公司会考多线程相关的编程,这个算法基本功还是随缘吧。笔试成绩有的公司会按照分比进行综合排名,有的公司只是作为参考,无论如何,来都来了,就认真对待吧。
技术面试题(偏B端):
总结一下10家公司都问道的一些知识点吧:
*备注:此文中所有连接都是转自其他大神,并非原创,仅此引用。感谢大神们提供的技术点总结。
1.集合
几乎每个面试都问到了,list和map问的最多(arraylist&hashmap有的公司会问底层实现原理),Hashmap和Hashtable区别,Arraylist和Linkedlist区别,各种区别,都是问烂的。
*Collection vs Collections ?
Collection:集合接口。
Collections:包含有关集合操作的静态方法(sort等)。
给一个其他大神总结的集合汇总链接:集合汇总 (https://blog.csdn.net/baidu_28068985/article/details/78529246)
2.多线程、线程状态、线程池等
老生常谈的多线程实现方式,还有线程池的用法。有的公司会往细节问,这个就要看用的熟悉与否了。
线程状态记住那张图就行。
3.String 、StringBuffer、StringBuilder
给个链接:String、StringBuffer、StringBuilder (https://blog.csdn.net/rmn190/article/details/1492013)
4.JDK、JRE、JVM包含关系
JDK:软件开发工具包(SDK)
JRE:包含了JVM实现及JAVA核心类库(运行环境)
JDK包含JRE,JRE包含JVM
5.栈、堆、方法区
栈:基本数据类型、引用数据类型地址。
堆:对象、数组
方法区:方法、静态区
6.接口vs抽象类、重写vs重载、成员变量vs类变量
太过基础的东西。
7.Spring方向的东西
spring事务隔离级别和传播性?
spring中的设计模式?
spring注入bean方式?
spring常用注解?
spring mvc实现流程?
spring ioc&aop?
spring bean 五个作用域?
spring面试终极列表给个链接:spring面试总结 (https://www.cnblogs.com/wang-meng/p/5701982.html)
8.try、catch、finally都有return语句时执行哪个
throw vs throws
throw:抛出异常;
throws:在方法上声明该方法要抛出的异常,然后在方法内部通过throw抛出异常对象。
9.Mybatis
因为我没有用过hibernate,只用过mybatis。持久层一般不会深入提问,一般问用法我觉得。只要会用,一般都能回答出来。
# 和 $ 区别?
xml有哪些标签?
如何实现分页的?
resultType vs resultMap?
映射文件XML不能解析<,>(小于、大于),那sql应该如何实现?
10.JDK1.8新特征
如果没用过,最好了解一下;如果用过,会问一些关于lambda函数的问题。(我也一直用1.7,只是了解了一下新特性)
HashMap速度更快——红黑树;
代码更少——lambda;
强大的streamAPI——stream;
便于并行——parallel;
最大化减少空指针异常——optional
11.redis,dubbo,zookeeper
不好意思,表示没用过。不过对于会用的人,问的应该都不是问题。
12.徒手写sql
写一些sql语句,或者算法,都比较偏基础。
冒泡、快速排序;斐波那契数列;递归实现字符串倒叙。
13.项目经验
一般让讲一下最近做过的项目。(主要从业务方向入手,讲一下项目流程)
项目中用的技术点提问(一般针对某个技术提问)。
项目中遇到的最棘手的问题。
某个业务的表设计是怎样的。
总结:背熟简历,回顾一下项目经验。只要是自己参与的,一般没啥大问题。(自己没参与,但是知道所以然也没问题)
面试知识点链接:
两年经验 (https://blog.csdn.net/alinshen/article/details/73612865)
三年经验(https://blog.csdn.net/kangqianglong/article/details/64922497)
人资、高层领导面试:
如果有幸技术面试过了,会走高层面和人资面。(个人觉得轻松许多,一般技术面试官会比较严肃,哈哈,谈理想谈未来谁不会。)
总的心态要积极,不带抱怨,面带微笑,目光不要游离,对面如果有多人,注意目光雨露均沾。
离职原因不要说太多,直中要害。
事先要了解一下所面试的公司,知道公司是干什么的,以及自己想要进去做什么,所谓知己知彼,百战不殆。
中小型企业,提薪资可以比期望的高一点,一般上市公司或者国企,最多也就能给到市场平均水平,不排除你特别优秀。
福利待遇,五险一金不可模棱两可,能找全额交金的,尽量找全额的。
企业文化固然重要,团队文化更加重要!
写在最后:
面试时候,不仅个人会包装,企业依旧会包装,所以才有了试用期这个东西。
如果试用期间,发现团队和公司并不是自己所期望的,或者公司并没有按照用人需求分配任务,那就直接走吧,不要委曲求全,拖泥带水。
赚钱时间很长,最重要的是明确自己想要的是什么,不忘初心,永远不缺乏重新开始的勇气。
愿程序员小哥哥们,程序媛小姐姐们,都能找到心仪的工作!