没有学历的程序员上限很低吗?BATZ面试评分最高的我,因为学历止步大厂......

一.学历对程序员重要吗?

总结: 学历不光是对程序员这个职业,对很多职业来说,他都是敲门砖,尤其是刚出社会的那几年。在2014年以前,那时候程序员找工作是非常简单的,会点js+html+java都能找到工作,对学历更是没啥要求,但是现在对学历的要求越来越高了,尤其是一些BAT的大厂,都慢慢把门槛提高到研究生了,所以说学历对程序员还是很重要的!

二、我的BATJ面试经历

一、字节跳动

  • 讲讲面向过程、面向对象、面向切面。
  • 指针和数组的关系和区别。
  • 讲讲Android handler。
  • 队列和栈的区别和用途。
  • 两个栈实现队列。
  • 输入Url到浏览器显示过程。
  • http请求方法。
  • get和post区别。
  • surficeView和view的区别。
  • app从点击图标开始的启动全过程。
  • 什么是线程安全。
  • 线程安全有哪些机制。
  • 如何保证 int加加(加号打不出来)线程安全。
  • Android线程间通信有哪些机制。
  • cpu调度方式有哪些。
  • 空间局部性和时间局部性。
  • 数据库乐观锁和悲观锁。
  • 数据库索引作用,优缺点。
  • TCP拥塞控制。
  • https加密传输过程。

二、百度

  • 二分查找的时间复杂度,对数据有什么要求?
  • 你对数据结构这门课是怎么理解的?
  • HTTPS,CA
  • FTP协议
  • 浏览器输入网址到页面显示的过程
  • TCP的包装结构
  • 7层网络模型
  • 信息储存的方式,应用场景
  • 进程间通信的方式,aidl
  • Bundler原理
  • Handler机制
  • HandlerThread,IntentService,AsyncTask
  • 点击事件分发机制
  • 滑动冲突解决
  • 广播注册方式,区别
  • 有序无序广播,本地广播
  • 服务的启动方式,区别,用途
  • 数据提供者怎么用?原理?
  • 布局是怎样加载的?有哪些方式

三、阿里

  • 介绍你自己的项目,后面大部分问题都会按着你的项目

  • 计算机网络HTTP协议

  • 为什么是三次握手,四次挥手而不是两次,三次

  • TCP长连接,短连接区别

  • Socket的长连接你是怎么做的

  • 数据库的三范式设计原则 , 索引怎么设计有什么影响

  • 计算机系统内核态和用户态

  • Java基础:final,finally和finalize有什么区别

  • 抽象类和接口的区别以及使用场景

    扫描二维码关注公众号,回复: 12738282 查看本文章
  • java内存模型

  • String,StringBuilder,和StringBuffer的区别

  • HashMap实现源码,以及线程安全的Map

  • 线程状态以及线程通信,线程锁

  • 怎么保证线程安全

  • synchronized的监视器应该怎么设置

  • volatile关键字会做什么

android相关:

  • activity的生命周期分析(比如按下关机键会发生什么)

  • activity启动模式。每一种的应用场景

  • Service的两种启动方式,比较不同点

  • Binder的原理,为什么是内存拷贝一次,还知道哪些IPC方式

  • 读过哪些源码,Handler源码说一下

四、字节跳动

  • JVM GC:标记算法、回收算法、垃圾收集器 走一套
  • ThreadLocal实现原理,map中的key value是什么
  • static块中能否调用实例方法
  • concurrenthashmap中是如何实现线程安全的,concurrenthashmap读的时候不加锁,那如何保证读的一致性 (Node数组用volatile修饰)
  • HashMap外部加锁 与 使用concurrenthashmap时两者效率相比如何 (全表加锁 vs bucket加锁)
  • NIO中buffer中在传输文件时如何工作
  • P父类有两个子类A B,A先加载了D.class,B再加载D.class,加载完成后的class D是同一个class吗(可能是这个意思,问题我都没听明白)
  • 如何创建一个注解
  • Executors中四个生成线程的实现类有什么特点,适用于什么场景
  • 一个方法中有A a = new A();这么一条语句,方法执行完后A的实例化对象在GC时能否被回收掉
  • finalize相关,调用finalize一定会将对象销毁吗?finalize一定会仅执行一次吗?
  • synchronized中锁的几种状态
  • 泛型的实现原理

手写代码(运气好,问的不难,几个都快速写出来了):

  • 几种单例模式,区别
  • 生产者消费者模型
  • 二叉树中序遍历

经验总结

个人经验,这个要看你的就业目标是什么,一些企业,如果没有人不要好高骛远。
1 、中小型私企。 这类企业对于学历基本不看重,更多的是看你自己一个人能同时做多少人的事情,即你知识面的广度,因此,你不仅要会后端,还有会前端、界面设计、数据库、部署、硬件等一系列的技术,不需要每种技术学的很深,但是一定要一个人就能撑起一个项目的所有工作。面试时会更关注你都做过什么,是不是自己做的,因为当你进入企业后才发现,整个开发部门只有你一个人。。。
2 、互联网企业。 这类企业对学历的考量只占一小部分,更多的是看中个人能力,尤其是在某一个领域的深度,恰好和上一个相反。在面试时,着重考察你的算法能力、思考能力和配合能力,往往会出一些具体的事例让你给出解决方案。一旦你进入这类企业后,你会就某一个点进行深入。当然,如果你的学校足够好,你会发现面试你的是你的师兄,你的领导是你的师兄,你的领导的领导也是你的师兄。
3 、传统大型软件企业。 这类企业对于应届毕业生的学历是非常重要的评估环节,如果你的学历不够或者学校不好,非常大的可能是简历筛选这关就不能过,即便你的项目经验和个人能力超强。当然,如果你在其它企业已经有过多年的经验,你还是有很大可能通过简历筛选的。
44 、涉及部分软件开发的其它行业大型企业。 学历是这类企业衡量能力的唯一标准,因为他们的 HR 不知道除了学历还怎么能衡量你。

说了很多,对于学校不好的学生而言,这些年其实互联网行业已经宽容了很多,最起码会给一个机会,想起 10 年前的我,刚从本科学校毕业的时候,没有经验什么企业都不会要的悲惨。。。

但是,个人的奋斗和机遇是你成功的重要条件。

源码精编解析(部分展示)

自行领取直达链接:【点击获取

需要相关知识点可以查看我的【GitHub】,对于已经掌握的可以忽略以节省时间。

猜你喜欢

转载自blog.csdn.net/Android725/article/details/114940001