- 英语程度是四级裸考过了,六级没过。
我的学习过程
15年6月中旬正式进入公司,工作两个月后发现自己是真心不喜欢本专业的工作,最后下定决心自学当个码农(内心斗争过程略)。因为大学做过单片机的项目,知道自己喜欢做这方面的工作。遂开始各种搜索转行攻略,最后锁定android应用层开发。毕竟做出来的东西能看见,还是很振奋人心的。
先开始学习Java基础
看推荐买了李刚的《疯狂Java讲义》, 为了生存无法脱岗学习,还好每天下班准时,有几个小时让我看书,于是跟着书上的内容一步步在电脑上敲。开始还不错,后面发现这书写得好臃肿,都不知道哪里才是首要抓的重点,代码也好多植入广告。遂找了网上推荐的30天Java教程的视频。两倍播放速度看了一半,觉得看视频接受知识太被动。还是硬着头皮看回书,不懂的内容就Google其他大大们写的博客,或者直接看那一节的视频。每天5个小时左右,一个月过了一次Java基础。实操不足。
第二阶段,直接开始android的学习
知乎很多地方都推荐郭霖的《第一行代码》, 买了一本开始照着做。每个例子都自己动手实践了一遍。不能不说这本书真的很棒。很多实用的技巧,讲解也深入浅出。由于这个阶段自己事情比较多,估算也是一个月看完了。看完这本书后发现内容还是太少了,不过告诉了我android应用开发的大体知识结构。提到的知识点也去搜索一遍,补全一些没有提到的知识。期间在上班的空余时间用手机刷了一本《SQL必知必会》。
后面自己电脑再下载了一个MySQL,跟着《MySQL必知必会》外加《w3school》(这个是教程网站)的教程实操了一遍,算是会了对数据库的基本操作。另外郭大大书里说的Git版本控制工具的内容比较散,自己又跑网上找了本《Pro Git》来学 ,还买了本《GitHub入门与实践》。
第三阶段,深入学习编程基础
看了知乎上面萧丼陌大大给出的编程入门指南后,开始对编程基础的恶补。还有网上各个大大给的一些推荐,最后买了《算法》第四版和《Head First设计模式》(还有好多书,因为自己都没完整刷过这里就不列出来了),开始了苦逼的算法学习。后面变成上夜班还是一个人值班,没什么事做就每天上班的时候看《算法》。实际这书更多的说数据结构,还好大学的课程涉及到相关一点知识。
这里面不理解的都会重复的看,可惜后面家里有些急事。算法看到了图那一章就暂停了。事后回来转战看了《Head First设计模式》,也是一点点慢慢看完,因为缺少实践,也就只懂基本概念。期间也刷了《图解HTTP》这部科普书,算是对HTTP有些概念了。还有因为平日遇到不会的知识都会搜索一下,这过程也看了很多杂七杂八的知识。
第四阶段,学习知识巩固
其实期间自己遇到很多事情,学习阶段期间已经不太明显。各种理由后,答主决定辞职脱产学习,此时是15年最后一个月了。最后安定在广州后继续学习,学了一轮其他知识后,结合网上一些面试总结和分享的经验又回去看了一遍Java基础。接着就回到android的学习上了,跟着谷歌的官方教程慢慢看,网上有大大们翻译的中文版。
其中略过TV等相关的内容,然后觉得得实操了。偶然发现Github上有知乎日报的API分析就开始了山寨。目前阶段,实现了部分日报的功能后,发现自己的代码设计有待加强,去看了不少代码规范还有什么MVC等模式也重看了《Head Firest设计模式》和《算法》第四版。开始重写一遍山寨的知乎日报。
求职阶段
胆子不够大,简历说实话。2月末开始投,到第一份offer为止,在某勾投了27份简历,19份被查看了,最后就3家有机会面试。忽略第一家奇葩公司外,剩下两家都能拿到offer。薪酬就是普通院校应届生的水平。(都说初级岗位竞争大……)
求职过程,说起来都是泪,简历基本石沉大海。为了撑下简历,用Design支持库的控件和常用的第三方库写了一个新的Demo。上面耗时一个星期,期间没有面试。然后刷了任玉刚的《Android开发艺术探索》。 当一个星期后我看完了,还是没有面试机会。说实话自己多少有些迷茫了,也不知道往哪个方向提升,于是去复习下基础吧。
过了一遍之前看的书,重新复习了排序和查找的算法。期间又过了一个星期,也还是没有面试通知。接着看《Java编程思想》,看了一半。好不容易终于有一个面试机会了,结果是一家奇葩公司,没有自己的定位,自己的产品内存泄露就算了,还有崩溃的bug。(毕竟第一个面试,答主还是很紧张的,就下载了产品使用了一下,顺便试试之前发现一个容易出现的问题,有些软件没注意编码的问题,开发只考虑中文的系统环境,你系统换成英文有些界面就会崩溃的了)面试期间跟面试官说了一下,面试官只是一笑而过。
期间也没有一个像样的技术问题。后面跟老板谈薪水,才明白就想找个廉价劳动力而已。答主知道市场不好,但还是不傻。这里写下来是提醒一下各位转码农的朋友,不要急着找工作,就忽略了公司的情况啊。
有时感觉转行也是要看点运气的,在走出第一家奇葩公司后,就收到第二家和第三家公司的面试邀请。刚好同一天,一个上午一个下午。
面试阶段
上午的公司直接是技术面,问的东西都是基础的东西。面试官看了下两个demo后开始从网络请求要怎么处理的这样问了起来……简历写的技能点全部被问了一遍。(这里建议简历上的技能点就不要乱吹了)现在写下自己能想起的问题,记忆有些模糊,大家参考下就好了:
1、快排怎么实现的?时间复杂度是多少?哪种排序可能比快排快?
2、(追问了)希尔排序是怎样的?
3、二分查找时间复杂度是多少?最坏情况时间复杂度尼?除了二分查找还有哪些查找?
4、说一下你了解到的Java库有哪些类是线性安全的,哪些不是?
5、(答主提到了StringBuffer和StringBuilder)要是在多线程操作下会怎样?
最后
做任何事情都要用心,要非常关注细节。看起来不起眼的、繁琐的工作做透了会有意想不到的价值。
当然要想成为一个技术大牛也需要一定的思想格局,思想决定未来你要往哪个方向去走, 建议多看一些人生规划方面的书籍,多学习名人的思想格局,未来你的路会走的更远。
更多的技术点思维导图我已经做了一个整理,涵盖了当下互联网最流行99%的技术点,在这里我将这份导图分享出来,以及为金九银十准备的一整套面试体系,上到集合,下到分布式微服务
7)]
[外链图片转存中…(img-gbYi2stT-1714762481367)]
[外链图片转存中…(img-X7EZhUS8-1714762481368)]
[外链图片转存中…(img-Z1rGjIQA-1714762481368)]