前言
程序员,近年来十分火爆的职业,凭着巨大的市场缺口和高额的薪水吸引着大量毕业生加入程序员的队伍。这其中就包括各类专业的学生,像我这种自动化专业的也在其内。这些不是计算机科班出身的可以看作是半路出家了。那么半路出家程序员和计算机专业出身学生有什么区别呢?
先来看一张计算机专业的大学课程表:数据结构与算法、计算机组成原理、汇编语言程序设计、Java语言程序设计、C/C++程序设计、操作系统、计算机系统结构、数据库系统原理、网络编程与计算技术、软件工程、计算机网络、软件开发方法等。
惭愧的说,就上过一门c语言程序设计。毕业找工作也是靠自学编程,然后牛客网(巨牛刷题网站)刷题,看某些面试宝典,做一些小项目才搞定一份工作。像面试某个知名公司时候,当场手写链表逆序程序,以及IP地址的划分规则,感觉是当场就被秒了。既然认识到差距,总是要弥补的。结合自己的学习过程总结了以下几方面。
面试的时候除了算法题,其他被怼成弟弟,没想到面试官给过了,一天面完三面并且一周之后收到了oc,觉得自己非常的幸运,终于得到了大厂的认可(虽然是颗白菜)。这里建议网友如果有自己亮点的话,还是可以勇敢大胆的尝试一下大厂,毕竟除了实力之外,运气与机遇也占很大成分,遇到欣赏你的面试官,就会比较顺利。
献上百度的三面面经~
一面:
0.自我介绍完 , 说说项目 , 从第一个到最后一个;
1.问了常用布局有哪几种;
2.Activity生命周期有哪些 , 具体什么情况下回调;
3.问了进程间通信 , Binder、管道、socket等;
4.问了View事件的传递 , activity-window-decorview-view;
5.事件怎么从手指传递到activity的;
6.LongClick和OnClick分别怎么触发的;
7.说说Java类加载器 , Android有哪些类加载器 , android顶级类加载器是什么;
8.怎么自己加载一个类 , 不让父加载器去加载 , 自己load的话 , 怎么解决其它类加载器的引用;
9.说说内存优化(内存泄漏、大对象优化等) ;
10.说说openGL(举了一个实例 , 做一个画中画);
11.说说netty(之前项目提到过) , 基于什么线程模型 , 为什么能承载高并发;
12.说说你最擅长什么(说了x86项目移植 , 算法优化);
13.写一个排序算法 , 时间复杂度多少 , 怎么优化(写了归并 , 说了加希尔) ;
14.写一个常用的动画。
二面:
1、自我介绍?
2、很大数组中找第K大元素?
3、项目相关?
4、比较擅长什么语言?脚本性语言?
5、三次握手?
6、UDP数据包长度多少?
7、研究经历?
8、最近看的书?
9、对Linux环境的了解?
10、进程的状态有几种?
11、你觉得你优势的地方?
12、平时学习开发过程中遇到什么困难?
13、发表了几篇论文?
14、进程和线程的区别?线程池?
15、多线程要注意什么问题?
16、有什么想问的?
三面:
1、项目?项目难点?花了多久时间?
2、有了解哪些最短路算法?如果速度不够,你要怎么优化?
3、最近在看哪些书?
4、平时关注哪些技术?
5、进程与线程的理解?什么时候用进程什么时候用线程?
8、说一下平时的一些学习习惯?
9、团队沟通能力?
10、遇到的最困难的事情?
11、你有什么优势?有什么缺点?
13、对于OFFER怎么选择?考虑哪些因素?
14、有什么想问的?
最后
只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。
真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。
腾讯、字节跳动、阿里、百度等BAT大厂 2019-2021面试真题解析
资料太多,全部展示会影响篇幅,暂时就先列举这些部分截图
本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录