1、一定要把基本的数据结构,经典的算法,Unix编程,程序编译链接及计算机原理等基础知识扎牢,这些会长远影响你的职业发展。
2、 推荐从C语言入门,不单是因为很多操作系统、网络协议栈开源代码由C/C++实现,更多是因为C语言自身的特性:作为高级语言用户无需关注底层细节,同时能直观的看到数据流向。而且C相对语法规则较为简单,可以短时间的上手应用。最重要的是,遵循C/C++、python的学习方式,比直接学习python更能清晰的知道自己程序的内存等性能状况。
3、 不要过于追求第一份工作的工资,甚至可以说不要过于看重前两年的工资(虽然我工作也没满五年,这里的意思是,前两年不要因为多出来的一两千月薪转换自己的行业),也不需要过于学习如何投资股票理财(但是要有基本的风险意识),身边很多三十多岁才开始理财的人同样实现了财富自由。而是要扎扎实实做几个完整的项目,学习好基础原理,同时琢磨业务流程。当然大厂会有很多流程性的杂事,如何尽快处理不要过于消耗自己的宝贵时间,这个就是另一门学问了。
4、 胆子要大,要多发出自己的声音。很多职场新人在项目讨论的时候会担心自己技术深度不足,提出的观点比较浅薄,这个是不对的。说得不好听,我们都是来打工的,赚钱才是王道,面子是最不重要的。只有多表达自己对业务的思考才能展现自己的价值,很多时候跟人探讨自己的想法能及快速的更新自己的知识储备。
5、 答主机械工程出身,再说说机械(包括电气)工程如何转行进入互联网公司。看情况,如果是本科,极力建议跨考电气工程,因为很多基础课程像数电模电、电工学、高等数学等重要课程两个学科都有学习,考研难度相对较小。如果是机械的硕士,那么建议先把算法与数据结构全部学习一遍,不一定非要找创业互联网公司的实习,进去一两个月学不到完整的项目开发流程。尽量加入一个学校内部的团队完成一个项目,像华为每年都会在各大高校设置编程大赛等,这些可以让你全方位的了解进入软件行业必备哪些技能。对于已经工作的老铁,像我就是毕业入职后转行的,这里给一下我的学习过程仅供参考。尽快入门C语言,利用下班时间刷题把上面链接提供的算法与数据结构等书完整的自己敲一遍代码。然后选择热门的嵌入式操作系统如freertos熟读源码理清嵌入式系统内部任务调度、内存管理、任务通信机制等基本原理,动手移植一款热门芯片如stm32f429,把tick跑起来,任务调度起来就OK了。为什么选热门芯片,因为各种坑前任都踩过,论坛咨询问题相当容易。然后就可以上手UNIX环境高级编程这本圣经了。一般而言,学完嵌入式系统,再学linux系统的进程通信、虚拟化等,你会发现比直接学习Linux要容易上手很多。对unix系统调用有了基本了解之后进行Linux应用开发基本难度不大了,如果有公司业务结合练手那是最好的。接下来就看自己的发展方向了,如果想在物联网深入发展,可以移植一下A核,对中断处理会有更深刻的理解。如果想从事网络或者后台开发,可以多熟悉网络协议栈,这里推荐lwip入门,里面给出了TCP、UDP协议规范的完整代码实现,对理解tcp慢启动、拥塞控制、socket编程帮助相当大。
6、 不要急于挑选产品经理等管理类岗位,只有多跟几个大型项目,多玩几个迭代,才能对大厂的项目落地流程玩法了然如胸,才能跟各种老油条码农供应商扯皮。对需求理解不清,分分钟被老员工玩死。
7、 也是一句题外话,前面几年虽然工资不多,但是一定要养成存钱的良好习惯。当你身无分文来到深圳,住着900的农民房,吃着广东烧腊,再看看关外五六万的房价,你就知道深圳的生存有多么艰难。唯有努力才是解决社会问题的基础,如人饮水冷暖自知,很多事情只有自己经历了各中酸楚才知道。
总结
我最近从朋友那里收集到了2020-2021BAT 面试真题解析,内容很多也很系统,包含了很多内容:Android 基础、Java 基础、Android 源码相关分析、常见的一些原理性问题
等等,可以很好地帮助大家深刻理解Android相关知识点的原理以及面试相关知识。
这份资料把大厂面试中常被问到的技术点整理成了PDF,包知识脉络 + 诸多细节;还有 高级架构技术进阶脑图 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
这里也分享给广大面试同胞们,希望每位程序猿们都能面试成功~
Android 基础知识点
Java 基础知识点
Android 源码相关分析
常见的一些原理性问题
腾讯、字节跳动、阿里、百度等BAT大厂 2019-2020面试真题解析
[外链图片转存中…(img-SBLdK1J5-1709135129861)]