「校招季」校招需要准备什么?需要复习什么知识点?

基本流程

校招的套路基本都是宣讲会 — 笔试 — 技术一面 — 技术二面(大公司会到技术三面乃至终面)。

校招信息获取渠道

  • 各大微信公众号(搜索「城市名+校招」)
  • 校招网站(搜索「企业名+校招」)可以找到企业的校招信息。
  • 第三方招聘网站。这里我推荐「海投网」,宣讲会信息十分全。

注:不建议选择「海投」的方式,这种耗费大量时间精力的方式, 投入产出比可能比较低。根据自己的兴趣,公司的规模,公司的发展前景等,有选择性地投递简历。一个人的精力是有限的,把精力投入在优选出来的公司上,效果可能更优。

找准岗位方向

在找工作之前,明确自己的技术方向,是一件非常重要的事情。大多数人往往会被某些所谓的热门技术,高薪酬等所诱惑,怀疑自己的方向选择,什么岗位都去投一下简历。这在我看来是非常不好的,盲目地投递简历十分浪费时间精力。

如果你本来就参加过实验室项目和比赛,我想你对自己的技术方向定位应该是很清晰的了。

阅读大量笔试题和面试题

第一关的笔试题考核,是为了筛掉基础差的人。基础差的人,在工作中很难去解决技术问题,要么解决问题速度非常慢。

所以说笔试是首要解决的问题。一般来说笔试题考的范围比较广,占比最大的是「专业技术」和「数据结构」。「专业技术」指的是你的技术方向。「数据结构」指 算法和数据结构。越是大公司,越喜欢考察算法和数据结构基础。我参加的大部分笔试基本上 1/2 数据结构题 + 1/4 算法 + 1/4 java。(没看错,就是招的Android开发。)

当初我刷题是用的「牛客网」,网站体验不错,题目质量也不错。同时上面也有一些校招信息。其它同类型的刷题网站,例如 leetcode ,就看自己喜好了。

热门技术了解

除了基础外,你还应该对其他领域的知识有多少有所涉猎。你需要多了解一点新技术与科技前沿,你才能和面试官谈笑风生。

博客

从产品角度讲, 一个长期的价值博客是一份很好的简历。

从技术角度讲,持续的写作逼迫你不断学习,你将害怕有一天写无可写。

不过因为应届生熟悉大量笔试题和面试题需要花费相当多的时间,对于后面要找工作又不想没有完成技术文章累积的,可以写笔试面试题文章来完成每周撰写技术文章的任务。当然,文章不能是简单的答案,还需要自己的分析和理解。

面试的准备

准备 2 份自我介绍,一份 2 分钟,一份 5 分钟。根据情况选择不同时长的自我介绍。

建议自我介绍包括这些部分:

  1. 客观情况介绍,姓名,学校,专业,学历,应届还是非应届
  2. 应聘职位
  3. 和应聘职位有关的学习和实习经历。(成绩、各种荣誉……挑闪光点说,因为你说的,待会儿可能就会变成他面的重点)
  4. 特别突出的个人能力(以获得的奖项为依据)。如果没有,略过。
  5. 为什么申请这个职位,对公司的了解,对职位的理解并与自身匹配,对自己的定位,对未来工作的期望

面试官会从你的简历里挖什么?

面试官和你的对话一般是从简历里你熟悉的内容展开的,所以你需要好好回顾你的项目。

具体项目面试需要准备哪些方面,面试官会问些什么内容,可以阅读怎样一个漂亮的项目介绍 And 面试官到底在考察什么?

最后

面试还是要保持良好的心态,只要充分地展示平时自己的所学就可以了。不要把面试当作面试,看作一次技术交流,把心态从我要找到一份工作转变为我要通过面试去发现不足、提升自己,这样就会平和多了。应届面试者还可以和面试官交流你项目中解决方案的优化,对比企业级项目采用的不同的方式,也可以准备好自己的技术疑问,面试官一般会很愿意解答,你将有很大收获。


那么接下来,即将着手准备校招,从哪里开始准备呢?首先是基础。

基础这东西,各个公司都很看重,尤其是大公司,他们看中应届生的潜力,舍得花精力去培养,所以基础是重中之重。项目经历少怎么办?那就去打牢基础。

Java

  1. 多线程

这是必问的一块了

  • 常用的线程池有几种?

  • 这几种线程池之间有什么区别和联系?线程池的实现原理是怎么样的?

  • 给你一些具体的场景,让你回答这种场景该使用什么样的线程池比较合适。

  • 多线程同步

  • 实现多线程的两种方法:Thread与Runable。

  • 线程同步的方法:sychronized、lock、reentrantLock等。

  • 锁的等级:方法锁、对象锁、类锁。

    有前辈已经总结了40个Java 多线程的面试题,可以看看

  1. 网络

  2. IO

    IO 分为 File IO 和 Socket IO,File IO 基本上是不会问的,问也问不出什么来,平时会用就好了,另外记得 File IO 都是阻塞 IO。

    Socket IO 是比较重要的一块,要搞懂的是阻塞 / 非阻塞的区别、同步 / 异步的区别,借此理解阻塞 IO、非阻塞 IO、多路复用 IO、异步 IO 这四种 IO 模型,Socket IO 如何和这四种模型相关联。

    这是基本一些的,深入一些的话,就会问 NIO 的原理、NIO 属于哪种 IO 模型、NIO 的三大组成等等,这有些难,当时我也是研究了很久才搞懂 NIO。提一句,NIO 并不是严格意义上的非阻塞 IO 而应该属于多路复用 IO,面试回答的时候要注意这个细节,讲到 NIO 会阻塞在 Selector 的 select 方法上会增加面试官对你的好感。

  3. 注解

  4. 常见关键字的意义

  5. 面向对象的基础知识

  6. GC 类型,时机等

  7. 字符编码

  8. 九种基本数据类型的大小,以及他们的封装类。

  9. Switch 能否用 String 做参数?

  10. equals 与 == 的区别。

  11. Object有哪些公用方法?

  12. Java的四种引用,强弱软虚,用到的场景。

  13. try catch finally,try里有return,finally还执行么?

  14. Override 和 Overload 的含义去区别。

  15. Interface 与 abstract 类的区别。

  16. Static class 与non static class的区别。

  17. java多态的实现原理。

  18. 写出生产者消费者模式。

  19. ThreadLocal 的设计理念与作用。

  20. ThreadPool 用法与优势。

  21. wait() 和 sleep() 的区别。

  22. foreach 与正常 for 循环效率对比。

  23. 反射的作用与原理

  24. 泛型常用特点,List<String>能否转为List<Object>

  25. 解析 XML 的几种方式的原理与特点:DOM、SAX、PULL

  26. JNI 的使用

JVM

  1. 内存模型以及分区,需要详细到每个区放什么。
  2. 堆里面的分区:Eden,survival from to,老年代,各自的特点。
  3. 对象创建方法,对象的内存分配,对象的访问定位。
  4. GC的两种判定方法:引用计数与引用链。
  5. GC的三种收集方法:标记清除、标记整理、复制算法的原理与特点,分别用在什么地方,如果让你优化收集方法,有什么思路?
  6. GC收集器有哪些?CMS收集器与G1收集器的特点。
  7. Minor GC与Full GC分别在什么时候发生?
  8. 几种常用的内存调试工具:jmap、jstack、jconsole。
  9. 类加载的五个过程:加载、验证、准备、解析、初始化。
  10. JVM中 OOM 你遇到过哪些情况,SOF 你遇到过哪些情况。

JVM问题没怎么变,内存模型和GC算法这块问得比较多

操作系统

  1. 线程和进程的关系
  2. 线程安全
  3. 死锁的产生和解决
  4. 进程的几种状态
  5. IPC 几种通信方式
  6. 虚拟地址、逻辑地址、线性地址、物理地址的区别
  7. 什么是虚拟内存

数据库

一些基本的像 union 和 union all 的区别、left join、几种索引及其区别就不谈了,比较重要的就是数据库性能的优化,如果对于数据库的性能优化一窍不通,那么有时间,还是建议你在面试前花一两天专门把 SQL 基础和 SQL 优化的内容准备一下。没时间的话可以不复习,一般公司的面试数据库比重不高。

eg:

  • 数据库存储过程

TCP/IP

  1. OSI与TCP/IP各层的结构与功能,都有哪些协议。

  2. TCP与UDP的区别。

  3. TCP报文结构。

  4. TCP的三次握手与四次挥手过程,各个状态名称与含义,TIMEWAIT的作用。

  5. TCP拥塞控制。

  6. TCP滑动窗口与回退N针协议。

  7. Http的报文结构。

  8. Http的状态码含义。

  9. Http request的几种类型。

  10. Http1.1和Http1.0的区别

  11. Http怎么处理长连接。

  12. Cookie与Session的作用于原理。

  13. 电脑上访问一个网页,整个过程是怎么样的:DNS、HTTP、TCP、OSPF、IP、ARP。

  14. Ping的整个过程。ICMP报文是什么。

  15. C/S模式下使用socket通信,几个关键函数。

  16. IP地址分类。

  17. 路由器与交换机区别。

网络其实大体分为两块,一个TCP协议,一个HTTP协议,只要把这两块以及相关协议搞清楚,一般问题不大。

算法和数据结构

常用的数据结构概念的实现原理
  • array
  • vector
  • list
  • set
  • map
  • tree

非常重要,也是必问的内容。基本上就是 List、Map、Set,问的是各种实现类的底层实现原理,实现类的优缺点。

集合要掌握的是 ArrayList、LinkedList、Hashtable、HashMap、ConcurrentHashMap、HashSet 的实现原理,能流利作答,当然能掌握 CopyOnWrite 容器和 Queue 是再好不过的了。另外多说一句,ConcurrentHashMap 的问题在面试中问得特别多,大概是因为这个类可以衍生出非常多的问题,关于 ConcurrentHashMap,可以参考以下问题:

(1)ConcurrentHashMap 的锁分段技术

(2)ConcurrentHashMap 的读是否要加锁,为什么

(3)ConcurrentHashMap 的迭代器是强一致性的迭代器还是弱一致性的迭代器

题目示例:
  1. HashMap实现原理

  2. HashTable和HashMap区别

  3. Hashtalbe与ConcurrentHashMap区别

  4. ArrayList、LinkedList、Vector的区别。

  5. Map、Set、List、Queue、Stack的特点与用法。

  6. HashMap 和 ConcurrentHashMap 的区别

  7. 链表与数组。

  8. 队列和栈,出栈与入栈。

  9. 链表的删除、插入、反向。

  10. 字符串操作。

  11. Hash表的hash函数,冲突解决方法有哪些。

  12. 各种排序:冒泡、选择、插入、希尔、归并、快排、堆排、桶排、基数的原理、平均时间复杂度、最坏时间复杂度、空间复杂度、是否稳定。

  13. 快排的partition函数与归并的Merge函数。

  14. 对冒泡与快排的改进。

  15. 二分查找,与变种二分查找。

  16. 二叉树、B+树、AVL树、红黑树、哈夫曼树。

  17. 二叉树的前中后续遍历:递归与非递归写法,层序遍历算法。

  18. 图的BFS与DFS算法,最小生成树prim算法与最短路径Dijkstra算法。

  19. KMP算法。

  20. 排列组合问题。

  21. 动态规划、贪心算法、分治算法。(一般不会问到)

  22. 大数据处理:类似10亿条数据找出最大的1000个数.........等等

  23. 前序中序 输出层次遍历序列

  24. 求树高

  25. 是否是平衡二叉树

  26. 广度遍历、深度遍历

  27. 动态规划和贪心的区别

  28. 大整数加、减、乘、除、求模运算实现

  29. 很多整数,找其中出现次数最多的那个数

  30. 单链表翻转(两个指针如何实现)、查找、删除、插入以及双向链表、有序链表合并

  31. 判断一个整数是否是2的整数次幂.(n&(n-1))

  32. 常见排序算法的实现以及稳定性(快排跟归并考的很多)

  33. 字符串翻转(O(n))、匹配(KMP算法)

  34. 最长递增子序列(nlogn的算法)

  35. 链表判断是否有环,环的入口,两个链表是否相交(快慢指针)。

  36. 指定一个数组,求2个数的和等于指定的和(某一个数),如果是3,4,5,n个等于个的和(某一个数)呢?(可以看作背包问题)

  37. 跳台阶问题

设计模式

  1. 单例(懒汉、饿汉)
  2. 工厂
  3. 适配器
  4. 责任链
  5. 观察者

面试中关于设计模式的问答主要是三个方向:

(1)你的项目中用到了哪些设计模式,如何使用

(2)知道常用设计模式的优缺点

(3)能画出常用设计模式的 UML 图

Android

  1. Activity启动模式区别

  2. 四大组件生命周期

  3. 如何对产生 ANR 代码定位

  4. 检查内存泄露的工具

  5. 横竖屏切换时,Activity 的生命周期以及如何设置横屏或者竖屏

  6. Android 主线程与子线程的理解

  7. 怎么做性能优化

    • UI优化
      • 减少过度绘制
      • 不必要嵌套布局
      • 利用include标签来复用控件等等
    • 内存优化
      • 缓存
  8. Android的屏幕适配方案

    • 图片适配
      不同像素密度的手机加载工程资源文件(res)中不同资源图片

    • dimens.xml文件适配
      dimens.xml存在于工程资源(res)文件夹中不同values(如:value-1280x720、value-800x480)文件夹下,可用于指定控件大小,不同像素密度手机加载不同values文件夹下的dimens.xml文件

    • 布局文件适配(工程比较浩大,不常用)
      不同分辨率的手机,加载不同的布局文件已达到适配效果。创建多个layout(如:layout-1280x720、layout-800x480)文件夹用于存放不同像素密度手机所需布局文件。

    • 代码适配
      通过android相应api获取当前手机的宽高像素值,按比例分配屏幕中控件的宽高以达到适配效果

    • 权重适配
      通过android提供的(权重)剩余空间分配,已达到适配效果

  9. ListView优化

  10. Java具备内存回收机制,为什么Android还会出现内存泄露?写出三个内存泄露的场景。

  11. 说说你知道的当前几个比较火比较流行的开源框架(比如 Volley ,Universnal-image-loader等),是怎么用的,研究过他们的源码没?

  12. Android 虚拟机与 Java 的 Jvm区别

  13. MVC 、MVP 和 MVVM 架构

  14. Handler 消息机制

  15. AsyncTask 的原理

  16. OOM 原因、如何避免?

  17. 内存泄露的原因

    • 数据库的 cursor 没有关闭
    • 构造 Adapter 没有使用缓存 contentview
    • 调用 registerReceiver() 后未调用 unregisterReceiver()
    • 未关闭 InputStream / OutputStream
    • Bitmap使用后未调用recycle()
    • Context泄漏
  18. 三级缓存步骤

其他

C/C++相关
  1. 虚析构、模板和宏
  2. 虚函数实现机制
  3. vector与list的区别,map是如何实现的,查找效率是多少
  4. extern 关键字有什么用
  5. malloc和new的区别,能否malloc(1.2G)
linux以及操作系统相关
  1. 内存池实现
  2. 进程间通信机制
  3. Linux ps命令,以及看内存当前使用状态的命令
  4. 进程的内存空间

关于面试,你可能还想知道:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,182评论 11 349
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,468评论 25 707
  • 亲爱的咪贝, 昨晚洗好澡,你一脸兴奋地跟我说:“妈妈,我用了个好方法把蚂蚁窝给堵上了!我们再也不用担心卫生间有蚂蚁...
    葛瑛阅读 210评论 3 0
  • 又一次半夜醒来后再无法入睡。很多大道理在脑袋里盘旋,各种声音告诉我要爱自己多一点,不可依附于他人,要坚持,要赚...
    佳艺J阅读 204评论 0 0
  • “这个工作我要做10年,但是我真的不太喜欢这个工作,以后我要做的工作是……”我听到有人这么说,总是很担心,这有点儿...
    职场盖世熊阅读 3,144评论 23 110