前言

离我校招结束也有一段时间了,之前一直想着写一篇校招总结的,但是一直拖拖沓沓到现在,心里总是有些抗拒,总想着再拖会,写一篇更好的总结,离4.12也已经好几个月了,我也正有点写东西的必要了(严肃脸)。

还是前言

作为一个实际懵懵懂懂但却自以为是的人,在大二结束时才幡然醒悟需要开始学相关的技术了,好能够找到好工作,在秋招以前,我都以为找工作是大四快结束的时候才开始找的,所以,在我刚刚踏入校园的那一刻开始,我的大学计划是大一好好玩、大二想一下自己喜欢干什么、大三开始学、大四找工作。这么看着好像是一回事,但是除了第一条做的还不错,别的几条都是有点赶鸭子上架的意思,做的都不太好,或者说,这个计划其实就是有问题的,就比如第二条而言,我设定这个计划的时候就是想着大二在那空想自己喜欢干什么,从不会亲自去实践一下自己是否真的喜欢,永远都是站在岸上,却想着自己能够学会游泳。至于大四找工作那个就更离谱了,因为找工作很早就开始了,这也就是我为什么说我自己实际懵懵懂懂但却自以为是的原因。

假装进入正题

所以,先说一下我们的正题,那就是校招总结,打算分为三个阶段来说,顺序就是准备、开始、结束这三个阶段来说。

准备阶段

准备阶段如果要细说的话就篇幅太大,可能会舍本逐末,所以,大概就是找好方向、早做准备、早点开始。对于一个应届生而言,在找好方向这一块我觉得应该你首先需要确定自己不想干什么,然后自己不讨厌干什么,自己能干什么这几个方面去考虑,去确定一个大体的方向,这里就拿程序猿举例,分为很多方向,比如Android、前端、后台之类的,然后呢,如果你在学习这个方面的过程中,突然想学习一下别的方面的技术,没关系,喜欢就去学,就算你过一两个星期发现自己不喜欢了,但那又怎样?技术本就是相通的,点终究会串成线,线会织成面,当然,在你确定不喜欢之后你需要马上回到主线程中,不要觉得这是浪费时间,站在岸上永远都学不会游泳,只有在不断的尝试中才能逐渐清晰自己喜欢干什么。但是切记不可三心二意。

正题

面试部分

此部分是我以前部分面试后的总结,不分先后顺序,有一个由于找不到当初记录的资料,所以比较少,没错,说的就是最后爱奇艺面试那个。因为对于秋招没有好好准备,所以面试也不多,此外,别人的面试经验其实只能当个参考,以一个过来人的经验看,最重要的其实是你对自己简历上写的东西一定要熟,要知其然并且知其所以然,还有就是如果想进好一点的公司,常见的算法一定要会。

有赞

1.AA里面有几张表
2.数据库用了什么框架
3.多线程里如何保证单例模式的正常
4.Material Design的意义
5.Retrofit实现原理
6.intentservice和service的区别
7.单例模式的懒加载在哪里设置同步比较好
8.activity在onCreate中多少秒出现ANR,service呢?contentProvider会出现ANR吗?

虽然没有过,但是还是有收获的,遇到问题还是要多问几个为什么,还是应该保持哲学家的好奇心,不要对于知识理所当然,同时,逻辑要清晰,对于组件要明白为什么需要它们,了解它们的作用。对于方法需要了解它的作用,返回值,参数的意义。当然,也没有必要完全否定自己。只是需要适当的调整方向,不能再继续去看进阶的东西,但是先应该回头将基础重新理一遍。另外,简历上的东西一定要完全弄懂,注意是完全弄懂,毕竟面试官要了解你能不能胜任这个工作,都会先从简历上着手,如果你连简历上的东西都不是很清楚,自然就不会有谈下去的心思。至于为什么我需要让他了解我,让他觉得我能胜任这个工作,因为你就是来应聘这份工作的啊。

搜狗

数据库更新时我们怎么做?
1.数据库什么时候更新?
当我们应用升级的时候,用户安装更新,此时用户的数据库其实是没有更新的,只有当我们访问数据库的时候才会更新,访问数据库其实就是指调用自定义SQLiteOpenHelper类中的getReadableDatabase()或者getWritableDatabase()方法。
2.应用是如何知道数据库需要更新的?
当用户安装了我们最初的程序之后,此时访问数据库的时候会将数据库的版本号置为1.0(假设一开始是1.0),当我们升级我们的数据库时,需要自己在程序中传入一个新的version参数,是在new自定义SQLiteOpenHelper类的对象时传入,当我们传入的新的version参数比原来的大时,就会调用onUpgrade(db, version, mNewVersion);方法,源代码如下:

db.beginTransaction();
           try {
               if (version == 0) {
                   onCreate(db);
               } else {
                   if (version > mNewVersion) {
                       onDowngrade(db, version, mNewVersion);
                   } else {
                       onUpgrade(db, version, mNewVersion);
                   }
               }
               db.setVersion(mNewVersion);
               db.setTransactionSuccessful();
           } finally {
               db.endTransaction();
           }
       }

当用户更新我们的应用时,此时用户的数据库版本号还是1.0,但是新程序中的version参数是2.0,当用户访问数据库的时候,应用程序就知道此时需要更新数据库,然后就会调用onUpgrade(db, version, mNewVersion);方法,最后将版本号换成2.0。
3.那么我们在onUpgrade(db, version, mNewVersion);方法中如何更新表呢?
SQLite提供了ALTER TABLE,能够重命名和增加列名,但是无法删除列名,而且只能在最后增加列名,那么当遇到删除列名的时候需要怎么办呢?我们可以先采用四步:
1.将需要更新的表变成一个临时表
2.重新创建一个表,表名就是之前的表名。
3.将临时表中的数据插入到新的表中
4.删除临时表
这样就完成了数据表的更新。

爱奇艺

由于面完爱奇艺之后拿到了offer,然后就出去浪了,当时就简单的记了一下,现在写的时候找不到了,所以只能大致的说一下,先是让你自己写一个排序算法,然后对这个算法优化,然后是Android常见的面试题,其中包括设计模式等,还有就是问你使用过的框架以及它的源码等等,然后问到后面就是别的也不知道问什么,来,写算法吧,然后就开始在黑板上手写算法,都是一些很常见的算法,记得大部分在牛客网上都遇到过。包括电话面试的话,总共有四轮技术面和一轮HR面。

寻找招聘公司的途径

互联派

把这个放第一个不是因为它多好,而是我用它貌似一次面试都没有,搞不懂他们的内推是怎样的意思,也可能是我自己太菜吧,反正后面我都是看一下他们的信息,然后去对应招聘公司的官网或者以下几个网站去投简历。

v2ex

这上面的感觉还不错

水木社区

也还行

牛客网

一般般

官网

这个是最正经的。

最后说点什么,这不是鸡汤

在你找工作的过程中,你可能会遇到很多挫折和问题,特别对于学校不是很好的学生而言,比如笔试过后没有面试、一面之后就没有消息、你以为你能过的结果没过、每次你抱期望去面试结果都是失败、看到旁边的同学都不找了想放弃、努力找了那么久结果还是没找到、你兴致勃勃的去参加宣讲会结果那家公司只是打着招聘的幌子去宣讲自己的公司,作为一个过来人,我想说,如果不甘心,那就只能收拾心情,总结反思继续找,当然,有可能你找到春招结束,也不会找到,找工作有时候也是看运气的,如果甘心,那就不找了,其实最重要的就是在于你甘不甘心。我就是因为不甘心所以从秋招一直找到了春招,一直到4.12才拿到爱奇艺的offer,也是我第一份正式的offer。所以如果你不甘心就只能收拾心情,总结反思继续找了。

最后

最后再放一个我的简历链接吧,也不知道是不是最后的版本,但估计差不多,希望能给需要的人一些帮助,毕竟找工作确实辛苦。简历