Java程序员校招转行及求职分享(顺风、去哪儿、电信、58的等)

  • 背景介绍

题主某末流985水硕一枚,磕盐不会,偶然接触了下编程,而后又稍微学了学Java,后面就走上了程序猿的道路,今年四月侥幸去菊厂实习了一波(虽然没学到东西)。css

秋招拿了几个通常的offer(大佬们别见笑):去哪儿、海康威视、招银网络科技,最后签约招银(四川人,想天天下班吃火锅)。前端

去年的时候比较迷茫,不知道自学到底须要准备什么,在牛客上看了不少面经,很是受益,今天也分享一下供参考。本篇文章主要讲讲自学的历程及找工做须要注意的地方。java

  • 自学经历

题主去年四、5月开始决定学习Java,最开始主要看《Head First Java》(该书配有大量插图及段子,入门佳选,入门切忌《Java编程思想》),而后看了大量的培训班视频学习了Java基础知识,数据库,Java经常使用框架(不少人看不起培训班,培训班的质量确实良莠不齐,可是因为针对基础薄弱的童鞋,因此老师讲的特别清楚,以我校学子来看学着确定很是轻松,我通常开1.6倍到1.8倍的速度听)。在8月份的时候开始接触算法和数据结构,刚开始一头雾水,这算法和数据结构到底学习谁先谁后啊,作题看不懂,看书不太好理解。这里推荐《算法第四版》,配有大量的图,让你详细理解数据结构设计的过程(入门切忌《算法导论》)。搞完这些以后,有幸加入了一个工做室,(工做室因为刚成立事情很少后面也解散了,东西没有学到太多可是认识了几个朋友)在工做室期间,看了《程序员面试金典》、《剑指offer》,在牛客网上刷了剑指offer上的题(刚开始作题基本上作不了,先想而后看别人的解答仔细思考,再本身慢慢敲,作多了可能就有感受了)。后续又看了《高性能MySQL》(大部头,有时间必看,时间少选看)、《深刻理解Java虚拟机》(必看,忘了就看,主要是垃圾回收算法、类加载那一块,其它章节能够选看)、《并发编程的艺术》(必看,主要了解一下锁的原理)、《图解HTTP》、《图解TCP/IP》(日本人写的书,结合大量插图,看着很浅显易懂)、《Java程序员面试宝典》(彻底的面试知识点罗列的书,评分较低,可是对于梳理知识点是很是适合的)、《数据结构与算法分析 Java语言描述》(以为算法第四版少了点什么的话能够看这个补充)。这些书再结合大量的博客能够基本覆盖校招的知识点。mysql

在今年三月份时各大公司开始招聘实习生,题主水平有限去了华为实习,方向也是Java软开。因为所在小组全栈式开发,在里面耗费了大量时间学习了前端知识(前端依然菜的抠脚),因此总体感受上实习提高不大。实习了四个月以后,在八月底结束实习,因为部门缘由通知无法转正。当时内心很气然并卵,以为本身在里面提高不大又耽误了不少准备的时间,不如在图书馆看书(这也是个教训,实习不必定有优点,若是实习打杂转正概率小的话不如在学校夯实基础准备校招)。所幸题主在华为实习的时候每晚回去继续看书,同时在实习时有幸认识北研所一位实习老哥,天天用内部聊天工具跟他交流Java基础,基础尚不算太差。(这里想说一点的是,8月初不少公司就开始了内推招聘,如今内推特别泛滥,基本都要求笔试,笔试难度高于校招,没有准备的话基本gg,但最好都投一下试试水,题主当时因为在实习算法没练好就网易过了笔试。。。)linux

ps:这里说点我的感悟,当初在准备实习时,觉得刷完剑指offer、程序员面试金典,实习的题应该没啥问题了。实际状况是:实习题型基本全是动态规划(尤为是背包问题)、图搜索,若是早作准备,那彻底没问题。而等到正式校招时你才会动态规划基本题型,这时候的题的难度又上升了,因此算法题得早作准备。c++

  • 校招经历

校招在九月初的时候各大公司就开始集中网申了,须要提早作好简历。题主大概投了40多家公司(题主以为必定要多投多练,不必定只投本身想去的公司,在面试初期能够拿几家公司先练练手,若是运气好有幸拿了offer更佳。多投能让你有更多的选择,若是你只投了几家公司,而后都挂了,那么你后面基本只能投小公司了),整个九月上半月天天基本都在考试、投简历、作测评,印象最深的是有一天考了四个笔试,当晚投了一个公司简历,又作了俩小时新华三的测评,当时大概凌晨一点,整我的都恶心了。git

在面试初期好几家面试都没过,加上被菊厂拒了,内心仍是很不爽的,直到九月中旬去哪儿三面直接发了offer,当时有点柳暗花明的感受。后面又面了招银、海康以内的好几家公司,在拿到这几家以后基本就没找了(期间常常天天四五个面试邀请冲突,拒绝的感受仍是挺爽的,以为本身以前作这么多笔试仍是有效果的)程序员

下面讲讲几个公司的面试问题:github

酷家乐(一家创业作家装的创业公司,面试体验很是好,但二面约的时间和一个现场面试冲突了没面)web

电面:

  • 说说你印象最深的项目(异步队列)
  • 在项目中遇到了什么问题(数据库的设计、异步队列如何将事件传入)
  • 说说对redis的理解(基于内存、I/O多路复用、单线程)
  • redis为何要使用单线程(面试官补充主要是为了原子性操做)
  • redis有哪些经常使用的数据结构,项目中你使用了什么数据结构
  • 说一下spring的了解,有几种注入方式,大家项目通常使用什么进行注入
  • 项目的web.xml配置中dispatcherServlet和ContextListener是干什么的
  • mybatis使用状况,了解哪些,用了哪些标签
  • 项目中用到了什么设计模式
  • 项目使用了什么版本管理软件,在github学习什么开源项目没有
  • 一道算法,有序数组里面数字可重复,给定一个数,找出该数的范围(第一次就想到了遍历,后面想二分查找改进)
  • 汉诺塔问题

远景能源(新能源的土豪公司,招偏执狂,感受面试官是有那么点特点的,抓着一个点死问)

电面:

  • 类加载了解吗?类加载步骤,双亲委派模型。若是我写了一个java.lang.String类,怎么进行加载的,怎么跟原来的类进行区分的?
  • 垃圾回收机制了解吗?哪些时间咱们须要对垃圾进行回收,若是我有一台双核4g的机器,我该如何分配新生代和老年代的大小?
  • 异常捕获了解吗?说说经常使用的,你在项目中用到了哪些类型的异常捕获?若是碰到了空指针那些异常你会怎么处理呢?
  • 多线程怎么样?说说你项目中用到的并发
  • 说说你最拿手的项目?说了redis异步队列,就问同步和异步的概念,异步须要怎么实现,须要回调函数吗
  • 既然redis用到了缓存,那若是叫你本身实现一个缓存,你该如何实现?怎么考虑缓存过时这些问题?

电信IT研发(电信的互联网公司,有编制,待遇也不错,前面二十分钟基础感受答的基本滚瓜烂熟的,问到架构不太会了)

  • 单点登陆怎么作的,session共享,session和cookie的区别
  • Bootstrap啥类型的,jQuery了解状况
  • JVM垃圾回收,新生代和老年代的垃圾回收,可达性分析
  • HashMap和Hashtable区别,HashMap添加的对象为何要重写equals和hashcode
  • 数据库了解多少,事务acid,事务操做,怎么加锁,分布式系统锁,选举
  • 微服务了解什么,微服务治理,微服务之间通讯

58同城(面试最差的体验,酒店超级差,闷的要命,安排还恶心,过去等了三小时,一面面的还不错,二面没问多少就挂了,好像都是c++岗,面试官不用Java)

一面:

  • 手写快排
  • 数据库引擎的区别,说说btree,手写联合查询sql
  • HashMap了解多少说多少
  • wait()和sleep()
  • 事务举例
  • 用过什么nosql,说说redis,topk用什么数据结构
  • 数据库分表
  • 情景题,高并发访问一个接口,如何检测传入字符串的类似度很高的?答了个布隆过滤器,说沾了边

二面

  • 算法题给一个数组,如何把偶数放到左边,奇数放到右边?写完后说当两边顺序已经一致了,交换是否会出现问题,加个判断
  • 说说数据库,聚合函数了解吗?
  • 网络编程了解吗,http请求如何区分请求头和请求体?说了解一点nio的知识,nio指什么,同步和非阻塞的概念是什么?
  • 说下注册的时候的检测,多用户怎么断定是否被注册

去哪儿网(面试最好的体验,第一天上午机试,下午就接到通知明天去面试。在一个去哪儿合做的小清新酒店面试的,全部面试官都特别好,遇到答不上来的会给你解答,三面完直接现场发offer,只要在十月三十一号以前把三方寄给他们就行,简直不要太良心。当时一面完的时候我说我计算机网络和操做系统方面不是特别好,一面面试官笑着说:没事,路还长呢,你去等二面吧。待遇呢给的确实偏低,不过仍是由衷粉一波去哪儿)

一面:(30来分钟)

  • 说一个本身比较深的项目 ,redis多消费者一块儿取的时候若是队列为空你怎么处理(答了CAS进行尝试,超过失败次数以后就进入睡眠,面试官说能够不用这么复杂~~为空时直接进行睡眠就行)
  • 纸上手写Springmvc DispatcherServlet的大体实现(大概10分钟的样子)
  • 数据库了解吗?汇集索引和非汇集索引的区别,存储引擎的区别?主键使用不重复的字符串会出现什么问题(插入的时候因为字符串不能像自增加的id同样连续,因此在磁盘上的位置不一样)?
  • 说说HashMap吧,而后讲了HashMap、ConcurrentHashMap 1.七、1.8的实现(讲的很详细,面试官以为数据结构还不错)
  • 而后问计算机网络咋样,我说很通常操做系统咋样,我说很通常
  • 线程有哪些状态,怎么进行切换的。

二面:(40来分钟)

  • 说一个比较深的项目,仍是说的异步队列,问你这为啥要用redis作异步队列啊,我用线程池直接本身开一个队列跟这有啥区别。扯了一堆,扯了redis I/O多路复用模型,最后不太满意~~
  • 而后又手撸了一遍Springmvc
  • 而后问HashMap
  • 最后说你用了这么多redis,叫你设计一个缓存,你该怎么设计,get和set的时间复杂度怎么算的(答了用LinkedHashMap实现,分析了一下LinkedHashMap可是也没怎么说清)

三面:(20来分钟)

  • 谈下人生,当场发了offer

顺丰科技(最懵逼的一次面试,在品学楼一个教室面的,感受极不正规。一个估计三十来岁可是看着可能四十多岁的大叔面的,彻底get不到他的点)

一面:

  • 进去跟hr面同样,谈人生(你最喜欢看哪本书,你以为在华为学到了什么),全程基本没问技术,吹牛20分钟说能够走了

招银网络科技(招商银行下面的子公司,之前叫融博,负面新闻较多,今年在成都刚成立分部,因为是银行,笔试和面试都比较强调sql,面试偏重于数据库和项目。现场面在软件园那边的招商银行面的,当天直接三面,基本每一个人都有三面。面试的感受只有一个:不愧是银行,太壕了。在七楼面试,层高竟然有五、6米高)

一面(电面15分钟)

  • 说说对JVM的理解
  • Java程序初始化顺序
  • 线程的建立
  • mysql主键和惟一索引的区别
  • 说说最近的项目
  • 如何实现session共享,用redis如何实现
  • 说说微服务,微服务之间如何管理

二面(现场面30多分钟)

  • 看项目中有前端的,先问了下前端的css的选择优先级
  • 手写了一个查询sql
  • 手写了一个双重检查单例,问spring是怎么实现单例的
  • springmvc的大体实现过程
  • 项目里重要的地方
  • 说说微服务
  • 若是你不用redis来作队列,本身写你须要注意哪些方法
  • 数据库存储引擎的区别
  • 数据库优化会吗,说说经常使用的优化

三面(现场面30多分钟)

  • 面试官看了简历以为项目时间都不长,没有太多兴趣,全程带笑,叫讲项目的兴趣点。讲redis异步队列,吹吹原理。说这没啥用,你这单机redis还不如本身实现一个队列速度还快些呢,你用Java写一个相似的redis才厉害(当时有点懵逼)。而后笑着听我吹完了springmvc一套,最后问我微服务治理知道不,我就扯了点服务注册和发现的知识。

四面(现场面40多分钟)

  • 女hr全程含沙射影带笑的问,别人好像都只面了20来分钟。。。因为是转行,问了我转行缘由,学习、生活、教研室那些状况。

OPPO(广告部的工程师面的,面试官自我介绍时有个很是骚气的花名,总体问的比较开放,二面聊着聊着就挂了)

笔试题比较简单

一面(现场面20来分钟):

  • 面试官首先自我介绍,而后我自我介绍。叫先当作绩单,问我最喜欢哪一门课,这门课有什么特色(我嗅到了hr面的气息)
  • 而后说先看下笔试题吧,你以为笔试难不(我回答说不难就看到面试官在纸上写了个简单,感受想教育我了),就问了http和https的区别,https加密的过程
  • Spring是什么啊,为何用Spring啊?Hibernate是什么啊?Mybatis是什么啊?假如我如今要分库分表,我选哪一个框架?(这没接触过啊。。)你为啥用Redis啊,Redis有哪些方法,Redis事务,Redis哪些方法有原子性,Redis和Kafka用什么区别啊?
  • Java虚拟机垃圾回收方面的知识,生存区为何要有两个,空间担保机制是啥
  • 一个32核,64g的linux服务器,硬盘是5TB,怎么统计一个1TB的文件中一个限定中文名和英文名出现的次数(我简单说了下使用流水线),问大概须要多久时间,估计一下,一分钟两分钟仍是十分钟。(总而言之面试的问题所有都至关的开放,让你本身说)

二面(现场面20分钟):

  • 简单问了下项目,各个知识点都问了一点点。

海康威视(今年扩招特别多,面试相对偏水,面试官感受技术很不错,问的问题彻底不按套路来)

一面(现场面20分钟)

  • 面试官特别扯,进来就问后面还有几个,咱们稍微快一点吧。而后看了个人简历,就问前端的类选择器。
  • 而后问Spring Boot啥概念,有啥优点。接着问Spring Data JPA是啥,咋用(面试这么久第一次问我这个)。我解释了一些JPA是个规范,面试官问你这JPA用的啥版本啊(懵逼,俩月没用了。。记不住了),而后又问JPA是哪一个组织规定的啊(懵逼的说了sun、spring、apache。。实际是EJB3.0小组)
  • 看你用了Redis,你这Redis咋用的,用过lua脚本没有(这个真没用过)
  • 面试官继续问:你这Java虚拟机什么掌握的咋样啊(感受能够开始表演了),结果我回答还不错的以后,面试官问:说说一个class文件的具体组成结构啊,要细(懵逼,这部分没怎么看,就说里面有魔数)。继续问:虚拟机是起解释做用吗,有编译做用吗(一堆不是常规套路的问题问的很懵)。
  • 而后我说我模拟实现过Spring MVC,请让我表演一哈。面试官看完简历以后说,那你就说说用了哪些设计模式(???这怎么表演),回答了下以后又问我一个http的请求的组成结构,而后叫我说http的状态码,有多少说多少。(感受这个面试官就在观察表情,看着你很会的那种就立刻换话题,彻底不按套路出牌。最后殴打完我以后说了句你基础还能够)

二面(现场面5分钟)

  • hr小姐姐直接问想去哪,想要啥待遇

京东(投的成都岗结果北京的面试官面的,一面面试官以为我还不错,结果二面面试官在某天晚上深夜11点打电话来讲面试一下,说本身还在公司里面。我和他都很意外我投的成都岗,但倒是他们部门面试,估计特别缺人,问我能实习不,我说要作毕设不能实习就凉了。有点惋惜,留成都京东仍是很不错的)

一面(50多分钟)

  • Struts2和SpringMVC区别,SpringMVC有啥好处。SpringMVC的执行流程。一个网页从输入网址到显示经历什么过程?Cookie和Session的概念。Mybatis和Hibernate的区别。异常处理知道不?详细介绍了一下异常的分类并举例
  • Redis有哪些数据结构。支持事务吗?Redis分布式锁知道不?Redis能持久化吗,持久化有哪些方式,有什么特色?断电会丢失数据吗?谁更严重?
  • 数据库熟悉不,数据库引擎有哪些,InnoDB和MyIsam有啥区别,索引知道什么,哈希索引和b+树索引有啥特色,说说b树和b+树,画画b+树的结构,b+树最下面存的是数据吗?下面的数据有序吗?
  • 设计模式知道什么?项目中用了什么?回答用了策略模式,简单说了说。写个单例吧?写了个双重检查的单例。
  • 数据结构学的咋样?说说HashMap吧,对比说了HashMap和Hashtable,详细说了HashMap,最后引到解决线程安全用ConcurrentHashMap.详细说了ConcurrentHashMap1.七、1.8的put和size方法的区别和实现。其中问了synchronized底层实现知道不,就回答了个monitor,其它不太清楚。而后CAS是啥,解释一下。
  • 有并发经验没有?回答说没有,可是知道基本知识,看过并发编程的艺术。说说开启线程的几种方式吧?说说volatile?说说Happens-before原则?CountDownLatch知道不,解释下,什么状况下使用?
  • 写个二分查找吧,递归的
  • 作个智力题:8个球7个同样重的,有一个偏重,一个天平,如何两次找出偏重的小球
  • 给了一张纸,写写项目中如何保证代码的鲁棒性和可扩展性?
  • 你有哪些offer?而后介绍了下本身的部门。

二面(10来分钟)

  • 简单问了下简历上的项目,问能不能如今过来实习

总的来讲。面到后面才发现了不少套路,可是好的公司已经基本结束了。因此建议提前准备,即便不能实习,也去投几个公司练一练,每次把面试问题总结一下,发现里面的套路,而后本身准备一套吹点。

  • 总结

关于转行,之前评论宣称学了几个月Java随便找好工做。在如今的面试难度来看,软件也不是想象中那么好找工做,一个岗位要的人多可是竞争的人也特别的多,并且,编程最大的驱动力仍是兴趣,若是不敢兴趣的话,这份工做不会长久。若是以为本专业不太适合本身或者本身之后不太想去工厂那些地方上班,转行请趁早,也不必定非的学计算机,能够选本身方向相近的方向来自学。

若是想转学计算机,也请早点明确本身的方向,而后在这个方向上深耕一下。不少概念性、全局性的知识,在短时间内可能本身是没法理解的,须要一段时间、一个过程来理解(我的感受这是科班和非科班主要的差距),不少基础性的知识可能会在你之后运用某个知识点时才察觉到原来是这样。在自学了一段时间后,能够开始接触数据结构和算法及计算机的一些基础知识,刷题要趁早,平时多看一些技术博客(CSDN、简书、博客园),多逛逛GitHub、Stack Overflow,有机会的话尽可能找个工做室或者实习,若是实习不太靠谱,建议在校招前夯实本身的基础。

关于校招,找工做运气和实力是46开的,面试挂了不必定是本身不行,也颇有多是和面试官不太聊的来。并不太过沮丧,面完一个反思总结面好下一个。简历上的东西力争全都会,摸索一套属于本身的吹点。面试官大部分状况下不会问框架的基本使用,都喜欢问点底层的东西(面试造火箭,工做拧螺丝),因此会点基本的CRUD是没有太多做用的,建议深挖底层,好比题主比较擅长吹Spring MVC、HashMap和ConcurrentHashMap1.7和1.8的源码,面试的时候引导面试官,在一张纸上给他详细画本身的思路。好比项目中常常用的Redis,那最好知道Redis的底层的单线程模型和持久化的方式,再深刻一点本身模拟实现一个简单的Redis能够吗(LRU算法,再本身想一想时间复杂度)。使用Mybatis,能够本身运用JDBC模拟一下Mybatis的实现。这些好多都是题主校招后期才慢慢体会到的(然鹅工做都找完了)。

终于写完了,排版乱见谅了,祝各位找到心仪的工做,但愿本身顺利毕业(求善良的导师放过)。

若是以为有些帮助~欢迎加java学习交流群,分享面试、求职、提高自个人方法,Q群:282711949。

相关文章
相关标签/搜索