开学就是大学计算机专业的最后半年了,我该怎样在假期里学习才能掌握更强的编程能力,在面试中脱颖而出?

毕业后曾经回了一次高中学校,被高中老师拉着给大一的学弟学妹做了一次演讲。今年过年的时候,一个小学弟顺着当时留下的联系方式加了我好友,问了我一些问题。

我觉得这些问题很有价值,或许对正处于大学或者即将走进/走出大学的朋友有所启发,这里就把我的一些建议分享出来。

前言

在当今社会,大学似乎已经成为了一个必经之路,不管好歹,基本上都会读个大学再进社会。

很多人认为,高中才是学习真本事,学干货的时候,高考完就轻松了,想怎么玩就怎么玩,很多大人在鼓励孩子读书的时候也是这样说的。 但是,这样的观点是错误的,大学也是一个非常关键的时期,你在学校的表现会直接关联以后的就业。

那么在大学里,我们应该做哪些准备才能在以后的工作中脱颖而出呢?

作为一个过来人,今天我以自身经历为前车之鉴,给大家讲解一下作为一个Android开发的本科学生在大学里需要注意的一些事情,和一些需要避开的坑。

前车之轨——从渣硕到大厂

笔者是渣硕出身进入社会的。没错,大四的时候我选择了考研,但是并没有进入自己的目标院校,当时父亲在工地受了伤,弟弟在上学,家里又在修房子家里的条件并不允许我二战,我只能接受调剂去了一所双非院校。

今年是我进入社会的第二年,也是我在阿里公司的第二年。是的,我毕业后进入了大厂,现在就分享一下我是如何在完全的劣势下凭借自己的努力进入大厂的经验

对症下药

计算机专业学习核心就三门课:算法与数据结构,看《算法导论》。操作系统,看 Tanenbaum 的书,这是最最核心的课程。计算机体系结构,看 David Patterson 和 John Hennessy 合写的书。

这里要提醒大家,我们尤其要重视 System 知识,只有基础扎实才能在日新月异的IT行业立足。

另外,在这里也送学弟学妹们一本帮助我拿到BAT 等一线大厂 offer 的算法笔记,是一位阿里大神写的,对于算法薄弱或者需要提高的同学都十分受用,算法一定是计算机学习的重中之重。
(需要的可以复制下方号,加入我们的交流群,共享文件里面有,密码可以找管理员)

// 668350995  (可复制)

再细一点,我认为需要重点掌握学习的就是 :2-3门编程语言(1-2静态编译型 + 1-2 动态/脚本语言)算法与数据结构System(OS、计算机组成、memory、cache等等)工程开发能力(git、linux、shell、环境搭建、部署等)计算机专业的核心课几乎都是围绕着构建上述这些能力来的,比如:计算机学科导论和 C 语言汇编、操作系统、C++、数据结构、离散数学、数值分析和计算机组成原理计算机编译原理和数据库计算机网络与安全和软件工程还有高数、线性代数、离散数学、网络原理、网页设计、多媒体技术、汇编语言、面向对象的设计语言、Java 编程、ASP、SQL等总的来说是 先学习 C 语言和 C++。

教材有:C programming language-K&R、C traps and pitfalls、Algorithms in C 和 Expert C Programming学习数据结构。清华大学严蔚敏《数据结构》,目前还未找到经典的国外教材学习算法。算法导论和具体数学及其应用计算机组成原理。Computer Organization and Design The Hardware-3rd-David Patterson计算机系统。CSAPP操作系统。鸟叔的私房菜和计算机网络当然了。

以上都是基础,不管是以后想搞Java还是Android等移动开发都需要掌握这些。

下面针对我自己的专业,也就是Android开发领域来进行详细的解说吧。

Android 开发进阶学习

我感觉自己是一个比较幸运的人,在我的学习和工作中,我遇到了很多帮助我的贵人,受恩于人,我也乐于分享和帮助他人,下面我来说一下我这一路走来帮助过很多的资源。

大佬的学习路线

我这里有一个曾经带过我的阿里大佬前辈整理的对标阿里 P7 的Android高级架构师的一套大神学习笔记。

大家可以去看一下,如果有需求,可以直接点击此处获取:
耗时298天,8大模块、3382页66万字,Android开发核心知识笔记!

这份学习笔记绝不是在网上那种打包下载的廉价资料,而是大佬他自己需要学到某个方向知识的时候,需要看了,去网上挨个找的,最后汇总而成。

这个笔记分为几个模块,内容并不算多,但贵在精。

大家可以在这里获取,对于学习计算机的同学帮助非常大,且十分系统:这是大佬公众号的原文地址

部分资料展示:

后面的内容大家有需要的可以自己去大佬的原博客去看,我这里就不多说了。

我自己的学习积累

我在大学期间,买了很多书,泡了很长时间的图书馆,也看了很多技术书,但是,我后来发现,其实看书并不在于多,而在于经典和质量。

你把全部专业相关的书看完了也没有啃透一两本经典书籍来的高效。

读经典的书是站在巨人的肩膀上,看得远、悟得深,所以我在这里列出的书,尽量保持少,精简。

这是我大学曾经看过的一些书:

在这里,我也只推荐我觉得比较好的书,宁缺毋滥。

  • 计算机思维:

  • CS50,哈佛公开课《计算机科学导论》, B站就有资源,自取~

C语言:

(不要问我为什么要列举C语言,因为移动开发搞音视频开发要用到,而且,这还是一个非常吃香的方向,不信的话,可看一下大佬的这两个文:

提升:

  • 算法:

  • 《大话数据结构》

  • 《算法(第四版)》

  • 《算法导论》,一般人可能都会被劝退。。。不过可以看下学习C++

  • 学习C++:

  • 《C++ primer》

  • 《STL源码解析》

  • 《Effective C++》

  • 《深度探索C++对象模型》

  • 看完上面👆四本,C++算入门了,接下来靠你自己去进阶~

  • 好好学下网络:

  • 《计算机网络-自顶向下》

  • 《TCP/IP详解-卷一》

操作系统:

  • 《现代操作系统》

  • 学堂在线网站--清华操作系统课程

  • 如果你想自己试着写写mini 操作系统,我强烈推荐 《操作系统真象还原》,就算不写,这里也可以学到好多其它操作系统书少有的知识

  • 计算机系统

  • 《深入理解计算机系统》

  • 《程序员自我修养》--别被名字迷惑了,这本书真正该叫 《编译链接与运行》,真是好书

  • 《设计数据密集型应用》

Java:

  • 《Java 核心技术 》
  • 《effective java》
  • 《深入理解Java虚拟机》
  • 《Java并发编程实战》

下面是关于我自己准备面试的经验

(一)简历篇

简历的优化是非常重要的,特别是像我这样的双非院校,在校期间也没什么拿得出手的大项目,老实说,简历上面非常尴尬,很可能连面试通知电话都收不到。

下面和大家分析一下,能一眼让HR注意到的简历到底长什么样。

我有一个多年大厂招人经验的朋友跟我说:大厂招人,一般不会不要求应聘者全能,但是必须在某一项有专精技术

所以,这里建议大家简历的第一页上半页,或者前三行,务必表明自己的技术栈。这里稍加注意:描述时,可以针对自己的技术能力进行一些吹的操作,但是切记不可瞎吹,也不可吹过头,不然,你的面试问题难度也会提升,同时,你的人品也会遭受质疑。

下面的这是一个比较好的简历模板:

不好意思,放错了图,下面的才是↓↓↓↓↓

1.在写简历的时候要有侧重点,面试官的时间是很紧张的,没空看废话,对你的流水账日记不感兴趣(再强调一遍,第一页上半页,或者前三行,务必表明自己的技术栈)。

2.个人经历的描述尽量往工作和岗位相关的方向靠拢,少提不相关的内容干扰他们提炼重点信息。

3.项目短板的,告诉大家一个技巧,尽量挑选项目中自己熟悉的领域以及项目的亮点,要突出自己的贡献,是添加了哪些功能,还是优化了那些性能指数,最后再说说受益怎么样,例如这个功能被多少人使用,例如性能提升了多少倍。(最好按照岗位的要求,向上靠一靠)

4.切记不要“优化”过度,谨慎使用“精通”两字,拿不准的绝对不要写在简历上,不然你就是在给自己挖坑。(面试会根据你简历上写得技术从浅再到深入原理的提问。)

这里给大家推荐一篇文章,大家可以作为参考。

项目经验不会说?字节跳动小姐姐手把手教你"套路"面试官!

(二)修炼篇

搞Android这行的,大家都是靠技术吃饭的,一般都是,你是什么水平就开什么价。所以自身的技术修炼也是最重要的一部分,哪怕你的简历粉饰的再好,一到面试,是骡子是马,一遛就知。

20年校招季,我参加的大大小小的面试不低于40家。虽然我的主要目标是字节跳动,但是我一向认为,把鸡蛋放在一个篮子里的人都是傻瓜(咳,主要是不自信,怕失手后一无所获)。所以其他的面试也没放过(大公司没拿到几个,小公司很多都拒掉了)。

下面的分析适用于所有公司。

1.公司的人才需求简析

根据我丰富的面试经验,市场上的公司一般可以分成两种:大公司和小公司。小公司注重实践能力,大公司看中综合能力。

小公司面试会比较集中安卓开发这一块,关注的点主要是

  • 有没有类似的项目经验
  • 有没有遇到过他们差不多的问题

所以,面试准备中,除了基本的一些知识点还需要关注一些安卓开发实际中经常遇到的一些问题,诸如图片缓存,常见的开源框架等等。

大公司面试比较在意你的综合能力还有基础知识,下面我会列举一下比较重要的知识点

2.进入大厂需要掌握哪些知识?

进小厂的难度不大,这里就不再详说了,这里主要说一下进大厂需要掌握的知识点(大厂都能进了,小厂不在话下)。

  • 数据结构与算法
  • java
  • 安卓
  • 计算机网络
  • 操作系统
  • ……
    (以上按重要程度排序)

上面的几大模块的内容都非常重要,我看网上有大佬针对这些模块进行了归纳整理,这里就不在赘言了。

指路:https://blog.csdn.net/m0_46962786/article/details/112361198

这里主要是根据我自己的面试经历还有在牛客网等刷的字节跳动、美团等厂高频面试题整理出来的大厂高频面试题合集(含参考答案和解析)。

大家可以看看自己能不能全部完美的回答出来吧。如果可以,那你的基础知识掌握的应该就很棒了,可以加入我们的技术交流群找我内推。

937659705   (这是群号)
3.重要知识点整理(高频面试真题)
  • 图片相关
    图片库对比
    LRUCache 原理
    图片加载原理
    实现图片库
    Glide 源码解析
    Glide 缓存
    ……

  • 网络和安全机制
    网络框架对比和源码分析
    自己去设计网络请求框架
    网络请求缓存处理,pokhttp 如何处理网络缓存
    从网络加载一个 M 10M 的图片,需要注意的事项
    TCP 的 3 次握手和四次挥手
    TCP 与 PUDP 的区别、应用
    ……

  • 数据库
    Sqlite 升级,增加字段的语句
    数据库框架对比和源码分析
    数据库的优化
    数据库数据迁移问题
    Sqlite 常见异常
    ……

  • 插件化、模块化、组 件化、热修复、增量更新、Gradle
    对热修复和插件化的理解
    插件化原理分析
    ……

  • 架构和设计模式
    MVC、MVP、MVVM 原理和区别
    你所知道的设计模式有哪些
    项目中常用的设计模式
    手写生产者/ / 消费者模式
    观察者模式
    适配器模式,装饰者模式,外观模式的异同
    用到的一些开源框架 , 介绍一个看过源码的 , 内部
    实现过程
    RxJava相关
    Binder 机制及底层实现

  • ……内容过多,鉴于文章的长度,这里就不一一展示了,需要的可以点击下方蓝色字体获取完整版

以上的问题都是精心整理过的,每个问题都是一篇长文,大家一定要好好理清楚,因为面试官都喜欢深挖和追问,大家在某一块知识点必须有深入研究,能够回答面试官4到5个追加问题(加油)。

点击此处【我的GitHub】,获取文中资料完整版

4.数据结构和算法(重中之重)

一般来说,最后出场的都是压轴角色。

数据结构和算法非常重要!尤其是在字节跳动公司(美团,百度,爱奇艺也是一样的)。这个知识点是考验一个程序员技术水平最快的方法,尤其是对我们这些毕业不久的学生。

众所周知,国内互联网面试的流程逐渐在向国外靠拢,像字节跳动、BAT 等大厂,手撕算法题已经成为了必选动作。

数据结构与算法这个知识点的准备需要的时间比较长,要尽早准备,多刷一些leetcode或是其他类似的题。我个人的算法能力一开始也很差,但是经过我自己安排的算法专项训练,效果还是十分显著的。下面我把自己的复习方法分享给大家。

下面是数据结构和算法的面试核心知识点,大家可以参考学习,逐个击破。

  • 栈与队列:先进先出、后进先出
  • 线性链表
  • 查找:顺序查找、二分查找
  • 排序:交换类、插入类、选择类
  • 树、二叉树、图:深度优先(DFS)、广度优先(BFS)
  • 递归
  • 分治
  • 滑窗
  • 三大牛逼算法:回溯、贪心、动态规划(DP)

在刷题之前我建议你看一些书:

点击此处【我的GitHub】,获取文中资料完整版

《漫画算法之旅》

如果你之前没有任何算法基础,这边书很适合你,可以补充数据结构和算法的基础知识,像什么是时间复杂度空间复杂度、查找、排序等。
如果你有了一定基础了,建议你直接跳到最后面的算法实战部分。

《剑指 offer》

非常经典的一本书,学算法的人必刷。但是要注意了,这边书里面的题目是用 C++写的,如果你是 Java 开发人员可能会有点影响。但是要记住学习算法最关键的还是解题思路和方法,用什么语言实现是其次的,如果你时间比较多我是建议你用 Java 语言再实现一遍。

《labuladong的算法小抄》

非常推荐!这是一本很新的书,写书前作者在 Github 开源了一个项目,主要讲解 LeetCode 解题套路,Start 总数排名前40。在书的开头讲解了学习算法的基本思维和套路,建议看这边书的同时再配合 leetcode 刷题,疗效非常棒!

《算法导论》

要是不推荐这本书是不是显得我有点 low 了,这是一本科班出身的同学必看必学的经典大部头。国外大佬写的,国内翻译的经典之作,虽然是经典但是不建议刚入门算法的同学看,因为看了这本书你可能要放弃算法了,比较难看懂。建议有了一定基础再入手这边书。

如果你觉得看书比较枯燥,可以推荐你看一些极客时间的专栏,不过是收费,但是质量非常高。
《数据结构与算法之美》

这个专栏是文字+语音,作者是王争,前 Google 工程师。他采用最适合工程师的学习方式,不拘泥于某一特定编程语言,从实际开发场景出发,由浅入深教你学习数据结构与算法的方法,帮你搞懂基本概念和核心理论,深入理解算法精髓,帮你提升使用数据结构和算法思维解决问题的能力。

《算法面试通关40讲》

这个专栏是视频,作者是覃超,前Facebook工程师。作者会用白板带你一步一步解题,层层深入一环扣一环,每一题还会用多种解题方法。我基本看完了,收获颇多。

leetcode、书和极客专栏可以并行,学练结合,不要光看不练。

最后

我把自己这段时间整理的Android最重要最热门的学习方向资料放在了我的GitHub,里面还有不同方向的自学编程路线、面试题集合/面经、及系列技术文章等。

资源持续更新中,欢迎大家一起学习和探讨。

posted @ 2021-02-22 22:06  打王者的女程序员  阅读(95)  评论(0编辑  收藏  举报