知识总结:安卓工程师养成计划计算机基础细分方向知识算法

楼主Android菜鸡一枚,今年校招侥幸拿到了还不错的offer。因为校招实在过于侥幸,面试上很少遇到复杂的问题,这里就不写面经了,初略谈一谈校招的一些准备吧。可能有些认知偏差,请各位大佬轻喷。

一般国内企业招聘技术岗都会细分方向(客户端、前端、服务端等等),所以我个人会将笔试面试准备的内容大致分为三部分:计算机基础、细分方向知识和算法。

计算机基础

计算机基础无外乎是数据结构、计算机网络、操作系统、数据库、计算机组成原理(微机)和编译原理这些内容。鉴于楼主走的是Android方向,计算机基础是按照上面的顺序分主次复习的。因为楼主科班出身,复习的时候主要看的是课本和课件,这里简单列一下书单:

数据结构

《数据结构与算法分析 Java语言描述》第二版

数据结构这一块知识可以和jdk的collection包源码结合起来看。

计算机网络

《计算机网络 自顶向下方法》第六版

课本,个人感觉通读的话能覆盖到大多数知识点,但是一些稍微深入的问题(比如为什么三次握手四次挥手,2MSL相关的问题这些)就需要另外找答案了。还有一些公认的著作包括《TCP/IP详解》、《HTTP权威指南》、《图解TCP/IP》等等。

操作系统

《操作系统概念》第七版

从Android开发岗角度来说,操作系统可以和一些Linux(Android)的相关知识结合起来理解,比如虚拟文件系统、Binder这一些内容。

数据库

《数据库管理系统原理与设计》第三版

个人感觉,从数据库这一块开始,和移动客户端开发的紧密性就不是很强了(主要是楼主开发经验太少)。复习的时候主要就是看了看课本和课件了。有一次还搜到了一本叫《SQLite权威指南》的书,不过书没有翻过,不好评价。

计算机组成原理

《计算机组成与设计 硬件/软件接口》第五版

编译原理

《编译原理》(龙书) 第二版

计组和编译原理楼主复习得很少,只能说侥幸没有遇到多少问题==

细分方向知识

楼主Android方向,所以细分方向的知识主要就是Java基础和Android基础了。

Java基础

同样列一些学习资料吧。《Java编程思想》《Effective Java》《深入理解JVM》这些经典书目必不可少。《Java并发编程实战》也是一本经典,不过楼主水平太低啃不下来==并发这一块,感觉《Java并发编程的艺术》也很不错。对于入门Java8,推荐看《Java8实战》(虽然Java9都出来了)。

此外,感觉Java的准备比较重要的一环是看jdk源码,比较经典的像collection包、concurrent包等等。对于看源码,楼主的建议是结合博客去看源码。一方面,源码动不动就是几千行一个文件很难直接上手看(大概是楼主太菜==);另一方面,只看博客解析不看源码也不太好(博客可能有误,而且jdk的注释真的挺值得去看的)。

楼主虽然是科班出身,但是Java是自学的,有一个学习方式是我比较喜欢的:在复习的时候多思考(楼主比较有印象的自己的一些问题包括:enum的单例是不是懒加载,>>>运算符的实际用途,try with resources这个语法糖的实际作用和之前的try catch有什么区别,使用BufferInput/OutputStream/Reader/Writer和使用NIO的对比,为什么源码在方法中普遍喜欢使用局部变量去指向对象属性),当有这样一些疑问的时候,简单组织几个英文关键词利用google去搜索,往往都能找到很多讨论。

Android基础

《Android开发艺术探索》简直是面试神器,里面提到的很多知识点都是面试非常喜欢问的。另外我觉得艺术探索一书还有一个好处是指出了一些重要的知识点,适合照着书中的章节安排去深入复习相关知识。还有一些个人觉得不错的书包括《深入理解Android内核设计思想》、《Android源码设计模式解析与实战》等等。腾讯专项测试团队出的《移动App性能评测与优化》,我觉得更是一本开拓视野、了解大厂实际开发情况的好书。

官网的Guide我觉得也是非常值得学习的内容,还有google出的性能优化的教程也值得一看。

阅读第三方框架的源码也是一个免不了的准备环节。阅读像Java这样纯OO语言开发的大型项目,设计模式的知识储备是必不可少的。对于像楼主这样代码写的太少的兄弟来说,《Head First设计模式》可以算是设计模式入门的神器了,这本书里面对多种设计模式的对比分析值得好好去理解。这也是楼主目前唯一读完的写设计模式的书==此外,之前有个面试官建议楼主看源码之前先读一下《重构》这本书,楼主趁着国庆粗略过了一遍《重构》,感觉确实收获良多。

算法

《剑指offer》可以算得上是应对笔试面试的神器了,但是今年感觉刷《剑指offer》远不足以应付笔试面试,平时多刷刷LeetCode才是王道。

此外,不得不提牛客推出的左神讲解算法题的直播活动,对楼主秋招确实帮助良多。左神的题目讲解通俗易懂,而且节奏不会太快,推荐大家有机会可以去看看。

手写代码这个环节似乎总是逃不掉,楼主之前为了应对,暑假都是直接用的记事本在做OJ题目(文本编辑器一般都带自动补全功能,或者语法高亮),也是为了熟悉API,但实际的训练效果也不算太好==面试的时候容易出现划掉重写的情况,显得排版很乱==早知道还是直接练手写好了==

暂时先写这么多吧。感谢牛客网还有各位牛友们校招以来的帮助,希望这个帖子对你们有用~

本文来源于牛客网

作者:ss.edu

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员互动联盟

【答疑释惑第九讲】自学过程中如何才能抓住重点?

疑惑一 如何学好vim? 学习linux基本上第一关就是如何学习使用vim,vim其实就是个编辑器命令模式的编辑器,使得初学小白都觉得这工具很神秘,相对于越来越...

34150
来自专栏极限编程

解析简单设计原则

在 我的简单设计价值观 一文中,我分享了我在实践中形成对简单设计的理解。而提到价值观,平时跟同事讨论某个技术实践的时候,一旦触碰到价值观,我就会很谨慎,因为在两...

12360
来自专栏钱曙光的专栏

一周极客热文:编程面试的10大算法概念汇总

作者通过一些简单的例子,阐述在编程面试中排名前10算法的相关概念。由于完全掌握这些概念需要更多的努力,因此这份列表只是作为一个介绍。文章从Java的角度看问题,...

21560
来自专栏编程

在编程中为所欲为圣诞版

众所周知,在Java中final String中的值是一成不变的。大家都知道String的+(拼接)运算会丢弃内存引用并在内存中重新开拓地址,事实上也确实如此。...

21460
来自专栏马哥教育

学不好Python?我们分析看看正确的学习方法是什么-马哥教育

提起对Python的印象,除了全能之外恐怕就是简单易学了。很多人都在推荐新手学Python入门,毕竟语法简单、语句简洁,所谓“人生苦短我用Python”绝不是一...

40250
来自专栏IT大咖说

经过重重筛选,我们为什么要选择kotlin ?

内容来源:2017 年 11 月 19 日,上线了联合创始人郭达峰在“2017 谷歌开发者节北京站”上进行的《Kotlin as Your Next Langu...

35730
来自专栏Sign

太吾绘卷多分支选择的一些代码实现方式

最近有一款国产游戏『太吾绘卷』很火。这个游戏怎么归类比较麻烦,从整体上来说,这是款『文字冒险类』游戏,而它的文案数值以及系统水平很高。

35120
来自专栏即时通讯技术

微信团队分享:Kotlin渐被认可,Android版微信的技术尝鲜之旅

本文由微信开发团队工程是由“oneliang”原创发表于WeMobileDev公众号,内容稍有改动。

25000
来自专栏微信公众号:Java团长

最近项目重构的一些感想

最近,因为多个因素综合作用的情况下,我有幸得以负责一个项目的重构事项,并且时间/空间上都是相当宽松。而且由于系统较为复杂,需要对接多个业务开发部门,导致各种大需...

9520
来自专栏奇点大数据

如何零基础入门Python编程?

Python目前已经成为最受欢迎的编程语言之一,吸引了一大批粉丝,但是很多人在要跨入的时候犹豫了,原因竟然是觉得零基础学习Python太难了,真的是这样吗?零基...

20740

扫码关注云+社区

领取腾讯云代金券