概述:
双非小渣本,京东软开实习,同程艺龙软开准入职。总结一下【介于春招和秋招】之间的求职历程,目的是想留点东西给学弟学妹,希望学弟学妹们找一个好工作。
目录:如果只想看某一部分可以直接去看,跳过一些冗余的废话。
1 为什么是【介于春招和秋招】
2 【求职渠道】
3 面试官喜欢什么样的【简历】
4 【技术栈】想要在北京找一份中厂校招/大厂实习,需要具备什么技能
5 【刷题刷书推荐】提升能力的最快途径
6 【如何看待培训机构与外包公司】
7 【如何准确定位】
8 【面经笔经】
9 【总结】
一 为什么是【介于春招和秋招】?
因为秋招的时候,找了一份实习,就没考虑秋招的校招岗位,所以就错过了秋招,找工作的时候特别尴尬,12月 —— 1月,此时秋招以及秋招补招大部分公司已经结束,春招还没开始,简历通过率极低,岗位极少,想要找工作的同学最好把握秋招(9月开始,10月后基本结束,11月-12月,陆续会有补招,1月很少有公司还在招人)以及春招(3月开始,4月基本结束,且很少有补招)。
【总结】:
【秋招】 神仙打架,各大厂的hc会井喷,竞争很大,同时机遇也很大。
【春招】 算是秋招的补招,hc较秋招会少,一大部分岗位面向的是下一届的实习生,还有海外学生(海外12月份毕业),个人觉得竞争不比秋招少。
二 【求职渠道】?
这里是按难度递增排名的:
1 去学校的互联网企业
这里可能是面试难度是最低的,一般主要考察的是学校期间的表现和在校成绩,很少考手撕算法之类的编程题,可能去学校的互联网企业,手写代码,写出一个完成的快速排序就已经超过很多人了。(名校名企除外,很多知名企业的专场招聘会难度还是很大的)
2 实习转正
比起走春招/秋招的独木桥,实习转正也是一个不错的选择,好处就是面试难度会下调(不是绝对,比如字节跳动的实习和正式offer的面试难度是一样的,所以字节跳动的实习转正率也很高,据说可以达到50%),缺点就是可能最后没有转正机会,尤其是互联网行业不景气的现在,需要均衡考虑。(一般大企业的实习待遇都是很不错的,实习建议一定要去大厂,不要怕,实习的要求一般来说都是比校招低的)
3 春招/秋招
1 去别的学校参加招聘会,比如北京邮电大学,北京交通大学,互联网的招聘会就比较多,外校学生去也是有面试机会的,有的企业,上午是本校的面试,下午可能就会让外校的学生面试。
2 网申,在公司的维度上参加春招/秋招。去企业的招聘网站上申请,外地学生一般都会提供视频面试的机会,不用担心太远,同时一般的公司网申是需要线上笔试的,所以需要提前安排时间,不要错过笔试。网申的周期可能很长,比如投了简历1个月才会安排,需要耐心等待。
3 内推,一定要把握内推机会,一定要把握内推机会,一定要把握内推机会,特别重要,内推的简历可能会免笔试,可能走单独的流程(比如你内推了一份简历,官网投递了一份,你就有两份简历在跑流程,有double的机会),可能不会留下面试评价(比如你表现不好,但是由于是hr邮箱中的简历直面,可能不会上传招聘系统,不会留下不好的面试评价,你就多了一次机会),可能有特别的标识(简历免初筛,或者简历优先处理),这里为什么说可能而不是一定,因为所有的公司都不一样,用的不同的招聘系统,有不同的业务规则。
4 招聘网站:
这里推荐几个:
论坛:牛客网,国内没有哪个应届生求职平台做的比牛客网好,【牛客玩的早,offer拿的好】
招聘网站:Boss直聘,拉钩网(有个技巧,比如你想找java,不要只搜索java,多试一下其他关键字,比如后台,服务器,客户端等,你会回来感谢我的),实习僧(实习僧上一般都是大企业,而且不仅有实习,也有部分校招)。
微信公众号:Utips校招实习,刺猬实习校招、伯乐校招,可能会提供校招的咨询和内推,建议关注起来,同时还有职场小干货。
【总结】:多个渠道,多个岗位,多试一试,因为面试其实很大程度上看面试官的,可能同一家公司的不同部门,面试难度相差很大,大厂也有混进去的。
三 面试官喜欢什么样的【简历】?
这里简述,个人推荐【超级简历】这个网站,他有简历评分,简历排版,简历优化,简历模板,很多很多的功能,十分推荐,用这个做出来的简历,比我自己第一版简历感觉上好的太多了(关于这个简历的模板我也去专门请教过HR,HR说这个模板比较不错),非常适合不知道自己的简历怎么写的同学,同时如果你的目光是海外的企业,不要简单的通过软件翻译自己的简历,而是要找英语专业的同学帮你进行一些雕琢,因为直接翻译过来的简历可能不符合外国人的阅读习惯,从而影响自己的简历通过率。(关于简历,在牛客网上有【完美世界】HR的分享,值得推荐)
四【技术栈】
想要在北京找一份中型企业/大厂实习,需要具备什么技能?
Java基础
对封装、继承、多态、面向对象的理解(不要求背定义,但是至少要有一个自己的理解)
接口、抽象类、访问控制符等。
锁 Synchronized、Lock的原理、锁的分类,锁升级 CAS free-lock。
线程 线程状态,状态切换、进程线程区别、线程池、创建线程的方式,一些常用方法:wait()、notify()等
一些主要的方法:volatile关键字、equals方法,StringBuilder做字符的高效连接等。
对反射,泛型有一定的理解,做做Demo。
对Servlet应该有一定的理解(虽然我面试的时候没被问到,但是对于理解框架本身十分重要) 【总结】: 以上只是说了一小部分,java基础一定要打牢。然后说一些基本不用看的
JSP:一种View层的渲染技术,现在基本已经淘汰了,但是我熟悉的Velocity、FreeMaker里面很多的语法和JSP中 的JSTL表达式极为相似,所以学JSP可以让我们在学习其他渲染技术的时候更容易上手,但是由于JSP的性能问题,前后端 混写问题,现已经淘汰了。
SSH框架:企业基本都已经用Spring Boot开发,SSH框架已经淘汰了,一是因为太重了,对性能有影响 2 是因为出现过几次重大的bug,所以目前新项目没有采用SSH开发的
Swing:UI框架,可以舍弃
XML 基本已经被json代替,用Java对XML进行渲染和解析的操作实际开发中没遇到过。
集合框架(这里分为 了解、使用、源码 三个级别),要注意集合/容器 之间去区别和联系,以及使用场景
List
- ArrayList(源码)
- LinkedList(源码)
- Vector(了解)
Set
- HashSet(使用/源码)
- LinkedHashSet(源码)
- TreeSet(使用)
Map
- HashMap(源码)
- LinkedHashMap(源码)
- TreeMap(使用)
并发包(重点了解)
- ConcurrentHashMap(源码)
- CopyOnWriteArrayList (使用)
- ArrayblockingQueue (使用)
- AtomicInteger (源码)
- CountDownLatch(使用)
- CyclicBarrier(使用)
- FutureTask (使用)
- ReentantLock(源码)
- Condition(使用)
- Semaphore(使用)
- ReentrantReadWriteLock(使用)
- Executors(使用)重点关注线程池种类、各个作用、适用场景
- ThreadPoolExecutor 重载方法的参数、各参数作用
【总结】主要去看标注源码的,其他的可以有时间再看,源码不一定要逐行去看,可以找一下高质量的博客,看看里面的源码解读即可,并发包我看别人面经里很多,所以就去系统的学了一遍,但是不知道我面试的时候为什么没有问我的。
虚拟机
JVM内存模型的分区,存储的数据类型,是否会发生内存溢出。
加载机制
双亲委派模型
gc算法、fullGC、MinorGC触发条件
G1,CMS过程
JVM优化(考的不是很多,主要是分区,类加载,和gc)
四种引用
IO流(我NIO没看过,这里直接扒的知乎)
BIO
字节流:类型、适用场景
字符流:类型、适用场景
NIO
类型、适用场景 三大组件的联系、使用 内存情况 消息
中间件:
redis:基本类型,持久化策略,饱和策略,查找,使用场景,分布式锁,(分片和集群有时间可以看看)
Dubbo:工作原理,RPC协议,如何配置
RabbitMQ:工作原理,工作模式,如何配置
【总结】:消息中间件是锦上添花,主要还是基础。
数据库:
存储引擎 索
事务,MVCC,一致性读等。
锁机制。
SQL调优
表设计 (有时间还可以看看主从复制和读写分离)
web:
Tomcat 结构、流程(没学过,但是听说有考的)
Servlet 生命周期 使用
springMVC 使用 请求流程
spring IOC/AOP 原理 Spring的一些使用细节,比如json怎么接,如何配置事务等。
mybatis 使用 #、$区别 ,对一和对多
Spring Boot 使用
Spring Cloud 会更好,但是没遇到过问的
设计模式:
单例模式
工厂模式
观察者模式
适配器模式
模板模式
原型模式
建造模式
【总结】
了解即可,时间充裕可以做做Demo,设计模式一共23种,知道常用的就行。
单例考的比较多,各种单例的写法和优缺点要掌握,也要准备几个项目中用到的设计模式,比如我们的项目就 用到过,建造模式、模板模式、适配器模式。
数据结构:
数组、栈、队列、堆、图、树、集合、散列表、跳跃表。
都要了解,无论是找工作还是为了自己的成长。
这里知乎上树总结的比较全,就贴一下:
二叉树
- 平衡二叉树
- 二叉查找树
- 红黑树
- 完全二叉树
- 满二叉树
概念、适用场景、时间复杂度、好处坏处
B树
- B Tree
- B+Tree
两者的联系、区别、适用场景
算法:
了解常见的排序算法:
冒泡排序、选择排序、插入排序(基础)
归并排序、快速排序(常考)
桶排序、计数排序、基数排序(了解、不要求手写)
堆排序(很重要,java中有它的实现,即优先级队列 PriorityQueue)
各种排序的思想 时间、空间复杂度、稳定性如何,可以手写
DFS、BFS
回溯法
贪心算法、动态规划等。
网络
TCP 三次握手、四次挥手、各种状态、状态改变 拥塞控制、流量控制、累计应答。
如何解决乱序问题、如何解决丢包问题。
和UDP的区别
IO模型
同步、异步、阻塞、非阻塞概念
模型种类、各自特点、适用场景如何使用
HTTP && HTTPS:过程
DNS
TCP/ip协议
用户从浏览器输入一个URL,到接收到服务器响应的全过程。
Linux基础(我Linux只会写简单的命令,面试官也没办法问的更深)
常用命令
操作系统:
进程调度算法
用户态、内核态
进程线程区别
页的概念
【总结】:个人感觉,不一定对,是我自己的复习大纲,希望可以帮到你们。
五 【刷题刷书推荐】
提升能力的最快途径
资源: 【极客时间专栏】:均价80,干货很多,这里推荐一些我买过的
1 《MySQL实战45讲》 mysql的入门专栏,看到20章左右就能对MySQL有一个较为系统的认识了。
2 《趣谈网络协议》网络协议的入门专栏,看到26章,可以对tcp/ip协议有一个较为深入的理解
3 《从0开始学大数据》0基础大数据入门专栏,感觉像是科普文,我只看到了16章,写的还是非常好的,也是因为这个专栏,所以后来去了同程艺龙,想听一下李老师的现场课。
4 《Java核心技术36讲》不适合入门,但是适合有一定基础之后再反复研究
5 《数据结构与算法之美》非常适合算法入门
6 《算法面试通关40讲》用leetcode讲算法题,非常推荐,主要实现语言是python和java
【看过的书】
1 《深入理解Java虚拟机》 不是很厚,但是却是经典中的经典,建议多读读
2 《Java多线程核心编程指南》多线程的入门书,非常推荐
3 《程序员代码面试指南》算法书,大部分是算法题的解法,如果基础不错,可以去读,但是算法基础不是很好的话,还是用专门的算法书比较好,因为题永远只是辅助。
4 《网络是怎么连接的》 写的比较通俗易懂,由点即面的,个人感觉比较好理解,但是最开始没有一个宏观的网络概念。如果是为了面试的话,专栏或者博客可能来的快一些。
5 《图解TCP/IP》也是,如果是为了面试的话,专栏或者博客可能来的快一些。不是为了面试的话,可以细读一下,写的挺有意思的。
6 《图解设计模式》 感觉是同类里面最好的,比较精简,同时很全面,每个设计模式都配有Demo,读起来也会比较顺畅。
7 《Head First 设计模式》 这本书被称为设计模式的神书,确实它会引导我们去一步一步的解决问题,可能这个问题已经被解决了,然后我们才会恍然大悟,原来我刚才使用了设计模式,但是较厚,为了面试的话,不推荐,时间充裕的话,可以仔细看看,写的确实不错。
8 《算法图解》用python写的,算法入门书,比较薄,看起来还是比较轻松的。
9 《深入理解计算机系统》殿堂级书,建议找个时间刷一遍,但不是找工作的时候,太厚了,只看过几章。
10 《算法导论》殿堂级书,用很多数学的方法去论证算法的可行性,建议找个时间刷一遍,但不是找工作的时候,原因同上。
11 《码出高效 Java开发手册》建议刷一遍,写的特别好,涵盖了很多内容,书很薄。
12 《阿里巴巴 Java开发手册》也就是阿里规约,规范代码,建议看一下。
13 《Java编程思想》 有时间可以看看,但是不适合作为一本Java入门书,我Java入门的时候是学校的教材和培训机构的讲义,没啥好书推荐的。惭愧。
【总结】以上就是我求职期间看过的书,不敢对书的内容有什么评价,有些书非常好,但是不适合求职期间看。
【刷题】 个人的话题刷的不多,leetcode 110道,牛客网70道,去掉重复的题大概150道,算法算入了个门,刷题有很多种策略,龟派和兔派,我是先兔派(想10秒,想不出来就马上看答案,看最优解)刷了100道左右,然后就高频的题进行龟派的刷法(尽量时间、空间复杂度更低,方法更多的去完成)。
六 【如何看待培训机构与外包公司】
培训机构:个人觉得培训只是学知识的一种途径,我培训过,然后找了第一份实习,并不歧视,但是要注意的是,【不要把培训机构当作一根救命的稻草】,不要过分的相信培训机构,要有自己的思考,一定要努力学习技术,技术有了工作自然就有了,靠包装是走不远的。
外包公司:有些用人单位会歧视上一家工作单位是外包公司的员工,而且外包工资真不高,跟校招没法比(不是歧视外包,实话实说)。
要注意,如果你面试的时候把面试官百分之百(指的是所有轮面试,1 2 3 轮加起来)题都答出来了,你就要考虑该不该去了,可能你进去了也没有多大提升。
要求应届生有产出的公司,让应届生上来就干活的公司也要考虑一下你所能得到的成长,因为大部分企业的校招生进去之后都是当作后备骨干来培养的,机会会非常的多,切莫舍本逐末。成长环境是最重要的,而不是每个月多个1、2千的薪水。
七 【如何准确定位】
这个就不多说了,每个人心里都有自己的定位,投简历的时候不要怂,多投,多尝试大厂,然后双非渣本的同学(没错,就是我),你自己可以调侃你自己是渣渣,但是面试的时候或者是准备面试的时候,别看轻自己,你自己都觉得你自己不行,面试官为什么会相信你的能力呢?
八 【面经笔经】
京东(java软开实习)
学校的经历
有什么良好的编程习惯和代码风格
泛型可以被继承吗?举个例子
JVM内存模型的理解 用过那些数据结构,
谈谈你的理解 mysql数据库多个字段都存在索引时,查询操作时应注意哪些问题
是否自己写mapper/dao/pojo?有没有可以自动生成的方法
mybatis拦截器的使用
spring mvc中如何使用自定义的注解
mysql事务的底层实现原理
mysql中innodb的索引结构
mysql中锁的应用
如何自定义数据库连接池 假设自定义的数据库连接池有10个空闲链接,此时共有12个链接请求,剩下2个链接如何处理,如果想实现等待,如何去设计。
是否进行过sql优化,具体说一下如何优化的
常用的编译工具,经常使用的快捷键
voltile和synchronize的区别
CMS和G1
SSM中前后端交互问题,json在其中的作用,它是如何在前后端进行传递的?
不同项目中可能用到的jar包版本不同,在发生版本冲突的时候,如何去解决
如何把自己的jar包上传至maven
前端会写吗
javaScript中的对象,是否有类的概念
ajax可以设置为同步吗
总结:感谢在我实习的时候捞了我一把,也真的学到了不少东西。最感谢的公司。
众安保险(java软开 )
擅长的语言
项目中主要写前端还是后端
项目前端数据如何展示?是前后端分离吗
用到的框架?
接触过SpringBoot吗
讲一下GC的理解
项目中如何保证事物
Java8的新特性
Volatile和Lock
项目中用到了哪些设计模式
如何保证分布式架构项目中的数据一致性
如何实时保证分布式架构项目中的数据一致性
算法:给一个整数n,代表n个左括号,和n个右括号,判断合法的排列组合有多少种?
总结:算法写的一般,当时用的全排,然后用栈来判断合法字符。面试体验特别好,但是需要去实习,不能发校招offer,所以非常遗憾,比较推荐。
头条(java软开 ,火山小视频 && 抖音):
抖音:
Gc
手写Web Socket
红黑树
手写跳跃表的插入过程
写一下TCP滑动窗口的算法
B树和B+树
linux的使用
TCP拥塞控制
算法: 每k个一组,反转链表
总结:面试体验很好,面试官给推荐了2本书,编程能力有待提升,手写除了WebSocket之外其他的基本都写不出来完整的。
火山:
一面: Gc
jvm分区
对排序算法的了解
手写块排,归并排序,分析时间复杂度,空间复杂度
证明块排是稳定的排序算法
arraylist源码分析
算法: 去除链表中的重复项 1 -> 1->2 ->3->3->4 结果 2->4
总结:答得还可以,然后一直在面试中,醉了。
映客直播(服务器软开 java转golang):
笔试:比较简单,有一道题比较深刻: 内存1G,需要计算1G的数据排序,哪种排序方法效率最低,当时选的是冒泡,因为涉及到频繁的数据交换,其实应该是归并,因为归并不是原地排序,多占用的内存空间,会与磁盘进行频繁的页交换,造成卡顿。
面试:
实习的感受
学校的经历
手写二分法
手写图
手写图的广度优先算法
手写图的深度优先算法
总结:深度优先没写出来,广度写的也不是很流畅,图方面的知识看的太少了。
面试官:特别喜欢你,但是我可能不会给你过,蓝瘦。十分推荐去,真的会把应届生当成后备骨干去培养。
北森云计算(.net软开,saas方向):
一面:
list arraylist linkedlist
二分查找分析
redis 结构
线程同步,异步,互斥 临界段 线程状态 线程方法
Gc
Mysql 索引
设计模式
算法:两数之和
总结:一面比较简单,面试官还给讲了saas,c#和java的区别等。
同程艺龙(java软开)
自我介绍 之前打比赛的经历
c语言会吗?
arm指令了解吗?
java反射的应用
用反射来获取成员变量的时候,遇到成员变量本身是一个对象,该怎么做。
用过什么锁,
了解分布式系统中的锁吗,使用场景
arrayList和linkedList的区别和使用场景
重写equals
操作系统中的页和索引中的页一样吗
http协议
mysql数据库中的索引
redis中的分布式锁
Spring mvc的处理请求过程
游览器缓存
前端数据渲染用的什么?用到模板引擎了吗?
redis中的分布式锁,如何保证的
框架那哪种用的多,
简单说说springboot
单例模式的实现方法,区别,每种的特点
可以用反射来创建多个单例模式的对象吗
实习的经历和项目
为什么选择同程艺龙,不留在京东
算法: 两个链表,其中只有1个重复的元素,找到这个元素。
总结:offer call了,不出意外应该是会去,第一是这个公司给人感觉不错,新人体系很完整,并且非常喜欢一面的面试官,不出意外应该会分到一个部门,第二是不想折腾了,希望可以有一段时间沉寂下来,学些东西。
九【总结】
写这篇面经主要的目的就是为了给学弟学妹们说一下如何准备春招/秋招,因为来学校的互联网企业太少了,希望我踩过的坑,学弟学妹们能不要踩,虽然咱们学校不是特别出名,但是总体来说也算不错,加油。
——————————————————————————————————————
另外:觉得有帮助可以关注博主,定期分享一些leetcode高频算法,Java源码解读,Java基础知识,软件破解与推荐,等等。