双非同学如何逆袭大厂?

在互联网行业,入行的第一份工作很大程度上决定了以后职业发展的高度。有些双非的同学认为自己校招进不了大厂以后还会有社招,这种想法很危险。大厂的社招,大多数都只招大厂的员工。什么意思呢?大概就是字节跳动的HR只对阿里、腾讯、网易等大厂的工程师感兴趣,挖一个社招的员工要比招一个校招生绩效高,小厂员工在简历那关容易被pass掉了。所以,进大厂要尽量在校招阶段就进大厂,否则往后会越来越难。

那么如何再校招阶段进入大厂呢?

下面我们一一总结一些干货

算法

这个真的就只能靠刷题,不敢说每家公司对于笔试的重视程度怎么样,反正笔试基本上是必须要过的一关

给大家推荐几个刷题网站:

https://leetcode-cn.com

https://www.lintcode.com/zh-cn/

https://www.nowcoder.com/activity/oj

除了刷你别无选择!

计算机网络

1、正向代理和反向代理:

2、TCP流量控制与拥塞控制

3、TCP连接的三次握手和四次挥手

4、解释HTTP、HTTPS、TCP、UDP、IP

5、什么是WebService协议

Java基础

  • 描述一下值传递和引用传递的区别。

  • == 和 equals 区别是什么、String 中的 equals 方法是如何重写的、为什么要重写 equals 方法、为什么要重写 hashCode 方法。

  • String s1 = new String("abc")、String s2 = "abc"、s1 == s2 。语句1在内存中创建了几个对象。

  • String 为什么是不可变的、jdk源码中的 String 如何定义的、为什么这么设计。

  • 请描述一下 static 关键字和 final 关键字的用法。

  • 接口和抽象类的区别是什么。

  • 重载和重写的区别。

  • 面向对象的三大特性,谈谈你对 xx 的理解。

  • 考察的是基本类型的转换,及原码反码补码的运算。

  • byte 的取值范围是多少、怎么计算出来的。

  • HashMap 相关、HashMap 和 Hashtable 的区别、HashMap 和 HashSet 区别、HashMap 底层实现、HashMap 的长度为什么是 2 的幂次方、HashMap 多线程操作导致死循环问题、HashMap 的线程安全实现有哪些、ConcurrentHashMap 的底层实现。

  • Integer 缓存池。

  • UTF-8 和 Unicode 的关系。

  • 项目为 UTF-8 环境,char c = ‘中’,是否合法。

  • Arrays.asList 获得的 List 使用时需要注意什么。

  • Collection 和 Collections 区别。

  • 你知道 fail-fast 和 fail-safe 吗。

  • ArrayList 和 LinkedList 和 Vector 的区别。

  • Set 和 List 区别、Set 如何保证元素不重复。

  • UTF-8 与 GBK 互转、为什么会乱码。

  • 重载和重写的区别。

  • 为什么 Java 是解释性语言。

  • ConcurrentHashMap 1.7和1.8的区别:整体结构;put()方法、get()方法、resize()方法、size()方法

  • 地址栏输入 URL 发生了什么。

  • 组合和聚合的区别。

  • 讲一下 CMS 垃圾回收器。

  • JDK 动态代理和 GClib 动态代理、JDK 动态代理具体实现原理、CGLib 动态代理、两者对比。

  • Threadlocal 内存泄漏问题。

  • StringBuilder 安全怎么实现的、详细描述怎么扩容的。

MyBatis

  • Mybatis 执行流程。

  • Mybatis缓存。

  • Mybatis用到的设计模式。

Java锁

  • 锁类型

  • 悲观锁 VS 乐观锁

    悲观锁代表 Synchronized 关键字。

    Synchronized 关键字实现方法。

    乐观锁代表 CAS 操作。

    CAS 带来的 ABA 问题。

    CAS 带来的循环时间长开销大问题。

    CAS 带来的只能保证一个共享变量的原子操作问题。

    CAS 是如何保证原子操作的。

    AtomticXXX 实现的原理。

    volatile 关键字。

    内存可见性的原因。

    禁止指令重排序的原因。

    volatile 关键字不能保证原子操作的原因。

    关于 volatile 关键字的讨论。

    happen-before 规则介绍。

  • 可重入锁、 可中断锁、公平锁、读写锁

    谈谈对 AQS 的理解。

    可重入锁。

    可中断锁。

    公平锁。

    读写锁。

  • 偏向锁/轻量级锁/重量级锁 升级过程。

  • 补充

    自旋锁。

    分段锁。

    轻量级锁就一定比重量级锁快吗。

Java多线程

  • 线程与进程的区别

    线程的状态。

    Notify 和 wait 。

    Thread.sleep() 和 Thread.yield() 的异同。

    死锁的概念。

    并发和并行的区别。

    线程安全三要素。

    如何实现线程安全。

    保证线程安全的机制。

    谈谈对对多线程的理解。

    run 和 Start 方法的区别。

  • 多线程

    创建线程的方法。

    线程池创建线程。

    ThreadPoolExecutor介绍。

    BlockingQueue。

    ArrayBlockingQueue。

    LinkedBlockingQueue。

    LinkedBlockingQueue 和 ArrayBlockingQueue 的主要区别。

    handler 拒绝策略。

    线程池五种状态。

    深入理解 ThreadPoolExecutor。

    线程池中 ctl 属性的作用是什么。

    shutdownNow 和 shutdown 的区别。

    线程复用原理。

    灵魂拷问:你如何设置你的线程池参数。

    CountDownLatch 和 CyclicBarrier 区别。

  • 多线程间通信的几种方式

    使用 volatile 关键字。

    锁机制。

    final 关键词。

    ThreadLocal 类。

    JUC 包中的相关 lock 类

Jvm内存模型

  • JVM内存模型

    程序计数器(记录当前线程)。

    Java栈(虚拟机栈)。

    本地方法栈。

    堆。

    方法区。

    直接内存。

  • JVM 垃圾回收

    垃圾判断标准。

    引用计数法。

    可达性分析算法(根索法)。

  • 垃圾回收算法

    标记清除。

    复制算法。

    标记整理。

    分代回收。

    GC 垃圾回收器。

  • 垃圾收集器

    Serial 垃圾收集器(单线程、复制算法) (新生代)。

    ParNew 垃圾收集器(Serial+多线程) (新生代)。

    Parallel Scavenge 收集器(多线程复制算法、高效) (新生代)。

    Serial Old 收集器(单线程标记整理算法 ) (老年代)。

    Parallel Old 收集器(多线程标记整理算法)(老年代)。

    CMS 收集器(多线程标记清除算法) (老年代)。

    G1垃圾回收器。

  • 目前 web 应用中的垃圾收集器。

  • 吞吐优先与响应优先。

  • Minor GC 和 Full GC。

  • Full Gc 触发条件。

  • 对象内存布局。

  • 为什么新生代存在两个 survivor 区。

  • 一个对象真正不可用,要经历两次标记过程。

MySQL

  • 什么是数据库事务、数据库事务的四个特性是什么。

  • 请分别举例说明幻读和不可重复读、并描述一下它们之间的区别。

  • MySQL 的默认隔离级别是什么。

  • 为什么要使用索引。

  • 索引这么多优点,为什么不对表中每个字段都创建索引呢。

  • 索引是如何提升查询速度的。

  • 请说出你知道的索引失效的几种情况。

  • 什么是聚簇索引与非聚簇索引

  • MySQL 索引主要使用的数据结构有哪些。

  • 谈谈 MyISAM 和 InnoDb 实现 BTree 索引方式的区别。

  • 什么是覆盖索引、请举例说明。

  • 谈谈你对最左前缀原则的理解。

  • MySQL 中 InnoDb 和 MyISAM 有什么区别。

  • 谈谈如何对SQL进行优化。

  • 如何用 explain 分析 SQL 执行效率。

  • explain 显示的字段具体解释下。

  • 请举出可能形成数据库死锁的原因、如何能避免死锁。

  • 数据库中的乐观锁和悲观锁有什么区别、各适用于什么场景。

  • 请结合你的开发经历,谈谈数据库中的乐观锁和悲观锁是具体如何被应用的。

  • 索引的本质。

  • MySQL 存储引擎。

  • MySQL 索引

    数据结构,B-Tree 和 B+Tree。

    带有顺序访问指针的 B+Tree

    索引的物理存储。

    与 B-Tree 相比,B+Tree 有什么不同。

    为什么 B+Tree 更适合做文件索引。

    为什么不用 AVL 树或者红黑树做索引。

    两种引擎的索引存储机制。

    MyISAM 索引实现。

    InnoDB 索引实现。

    索引失效条件。

    索引类型

    哈希索引。

    有序数组。

    B+ 树索引(InnoDB)。

    联合索引。

    最左前缀原则。

    覆盖索引。

    索引下推。

Spring

  • Spring bean 的生命周期

    初始化容器。

    Bean 属性注入、更改以及初始化。

    Bean 的使用。

    关闭容器、销毁 Bean。

  • Spring如何解决 bean 的循环依赖

    容器循环依赖。

    setter循环依赖。

    构造器循环依赖

  • Bean 的加载过程

  • BeanFactory 和 FactoryBean 的区别

  • Bean 注册与使用

  • Spring 三级缓存如何解决循环依赖。

  • Spring事务、原理、传播行为、失效条件。

  • AOP

  • IOC

  • SpringBoot 自动注入原理、stater原理、启动流程。

  • Spring 事务管理原理。

分布式

  • Dubbo 支持哪些协议、每种协议的应用场景、优缺点。

  • Dubbo 超时时间怎样设置。

  • Dubbo 有些哪些注册中心。

  • Dubbo 集群的负载均衡有哪些策略。

  • Dubbo 的主要应用场景。

  • Dubbo 的核心功能。

  • Dubbo 的核心组件。

  • Dubbo 服务注册与发现的流程。

  • Dubbo 的服务调用流程。

  • Dubbo 支持哪些协议、每种协议的应用场景、优缺点。

  • Dubbo 的注册中心集群挂掉,发布者和订阅者之间还能通信么。

  • Dubbo与 Spring 的关系。

  • Dubbo 使用的是什么通信框架。

  • Dubbo 的集群容错方案有哪些。

  • Dubbo 支持哪些序列化方式。

zookpeer

  • zookpeer 节点类型。

  • zookpeer 的作用。

  • zookpeer 的 watcher 机制。

  • zookpeer 如何实现分布式锁。

  • zookpeer 选举算法。

  • Paxos 算法。

  • Raft 算法。

  • ZAB 协议。

  • 什么是分布式事务。

    分布式事务解决方案。

    了解 seata 吗。

    一致性哈希?

    哈希槽、以及为什么是2^14。

  • SpringCloud组件?

  • 什么是 Hystrix、它如何实现容错。

  • 什么是 RestTemplate。

  • 什么是 Ribbn。

  • nacos/Eureka 的对比。

  • 什么是 zuul。

  • 什么是 Getway。

  • 什么是 Config。

  • 什么是微服务

    什么是SOA。

    SOA和微服务的区别。

  • 为什么要用微服务。

  • 使用微服务存在的问题以及解决办法。

  • 微服务之间如何通信。

  • 微服务如何发现。

  • 微服务挂了、如何解决。

  • 重试机制、幂等性。

    限流

    熔断、降级

Linux

  • linux 常用命令有哪些、分别举例。

  • 查询 3306 端口占用情况的 linux 指令如何写。

  • linux 中查看某个 java 进行的进程号 pid、如何操作呢。

  • 进程通信方式。

  • 进程、线程、协程。

  • 进程调度算法。

  • Liunx下的 I/O 模型。

  • 用户态、内核态。

  • 如何减少内核态到用户态的拷贝(mmap)。

  • 常用的命令。

  • 查看日志。

最后:

算法是大头!

那5%的人之所以能通过笔试/面试,肯定有自己的一技之长,也绝非等闲之辈,他们大都有ACM大学生程序设计竞赛等算法比赛获奖经历。

算法好,已经成为了进入大厂最基本的门槛,还可能是双非学生唯一能够补掉自己学历上欠缺的方法。很多程序员认为算法不重要,工作中用不到,有听说字节跳动前端岗位面试因为出很难的算法题来考察候选人而被喷,那只能“你说的太对了,算法工作中确实很少用到,但是对不起,我们就不招你”。

算法写得好,你就是Offer收割机。

一是因为其他技术学起来门槛实在是太低了。但是算法不一样,它需要候选人绞尽脑汁思考,在一定程度上反映了候选人的智商、逻辑、分析和解决问题的能力。面试官的算法好或者学历高+算法好才进了大厂,肯定希望同事也一样优秀,所以就这么一代一代传承下来了。

二是在刷算法题的过程中,会遇到各种各样的Bug,要想把题目通过,就要把所有Bug找到并修改。这与工作中的情景是差不多的,算法题目中遇到了Bug你可以断点调试或者打印调试,时间长了你就知道哪些地方可能会出问题、应该打印那些变量的值观察。这是培养你快速定位问题的能力,在工作中同样需要这种能力。

三是算法题的测试样例多种多样,需要候选人考虑到所有情况,甚至要考虑某些特殊情况。比如LeetCode上就有很多题会卡数组元素个数为0这个样例。考虑全面才能写出bugfree的代码,这样的候选人有谁会不喜欢呢?

当然算法过了,也要把整套只是体系学好来!

如何复习

Java笼统一点来讲,无非是:JUC、多线程、锁、集合、基础知识、框架、分布式。

一个知识体系一定要一块学!

一般这样的一个顺序:

  • 看源码,抠细节

  • 看博客、公众号的相应解释

  • 自己总结一遍,写到自己的MD文件或者博客里

  • 一周之后,或者几天之后在复习一遍,(艾宾浩斯遗忘曲线)温故而知新

更多精彩文章,尽在「JAVA干货分享」微信公众号!

关注公众号,在【资料分享栏】点击-->【java核心知识汇总】。即可获得包含上面所有的问题的复习规划资料

java并发核心知识体系精讲_JAVA核心知识汇总相关推荐

  1. 线程八大核心+java并发核心知识体系精讲_Java从业者如果不懂这些,面试80%都会挂在这些核心知识上面...

    JVM 无论什么级别的Java从业者,JVM都是进阶时必须迈过的坎.不管是工作还是面试中,JVM都是必考题.如果不懂JVM的话,薪酬会非常吃亏(近70%的面试者挂在JVM上了) 详细介绍了JVM有关于 ...

  2. java并发核心知识体系精讲_Java 面试突击之 Java 并发知识基础 amp; 进阶考点全解析

    版权说明:本文内容根据 github 开源项目整理所得 项目地址: https://github.com/Snailclimb/JavaGuide​github.com 一.基础 什么是线程和进程? ...

  3. java并发核心知识体系精讲_JVM核心知识体系

    作者:林振华 来源:编程原理 1.问题 如何理解类文件结构布局? 如何应用类加载器的工作原理进行将应用辗转腾挪? 热部署与热替换有何区别,如何隔离类冲突? JVM如何管理内存,有何内存淘汰机制? JV ...

  4. Java并发核心知识体系精讲---死锁的前世今生

    声明:本文是自己自学慕课网悟空老师的<Java并发核心知识体系精讲>的死锁部分后整理而成课程笔记. 课程链接如下:https://coding.imooc.com/class/362.ht ...

  5. 视频教程-Java进阶高手课-Spring精讲精练-Java

    [ [这里是图片001] Java进阶高手课-Spring精讲精练 中国科学技术大学硕士研究生,丹麦奥尔堡大学访问学者,先后就职于eBay.蚂蚁金服.SAP等国内外一线互联网公司,在Java后端开发. ...

  6. java基础:Java七大外企经典面试精讲视频

    java基础:Java七大外企经典面试精讲视频 对于很多应聘java程序员的求职者来说,全面掌握java面试技巧,确实是自己找到一个好工作的敲门砖.今天小编在这里给大家分享一个关于java基础的Jav ...

  7. java虚拟机精讲_Java虚拟机精讲 (高翔龙著) 带书签目录 中文PDF扫描版[63MB]

    <Java虚拟机精讲>内容简介:HotSpot VM是目前市面上高性能JVM的代表作之一,它采用解释器+JIT 编译器的混合执行引擎,使得Java 程序的执行性能从此有了质的飞跃.本书以极 ...

  8. 架构师知识体系(5)--建立自己的知识体系吧

    http://mp.weixin.qq.com/s?__biz=MzA4Nzg5Nzc5OA==&mid=400103116&idx=1&sn=89bc2f3644603ffc ...

  9. 小马哥spring编程核心思想_小马哥讲Spring核心编程思想

    小马哥讲Spring核心编程思想 ├─第01章:Spring Framework总览 (12讲) │      01丨课程介绍.mp4 │      02丨内容综述.mp4 │      03丨课前准 ...

最新文章

  1. 3层交换机和2层交换机的区别
  2. Apache多网站虚拟目录域名
  3. CSS3常用属性及用法
  4. -%3erow mysql_MySQL查询优化
  5. php游戏怎么设置fms,[FMS]FMS使用需要注意的几种问题总结说明
  6. NameError: name 'sys' is not defined
  7. 华为QoS中CBQ队列详解
  8. [转]Java总结篇系列:Java泛型
  9. window7 32位部署django
  10. SQL Server 2012 查看数据库属性
  11. 【唐宇迪 深度学习-3D点云实战系列】学习笔记
  12. 世界上最畅销的JSON和XML编辑器-Altova XMLSpy 2021版发布,升级版JSON Grid View归来!
  13. 微信获取粉丝信息php,1.2 微信粉丝用户及粉丝标签管理
  14. 关于程序员的996,我们谈谈历史和逻辑
  15. 一文揭秘字节跳动、华为、京东的薪资职级
  16. 推荐几个摸鱼时常看的技术网站
  17. 年轻程序员如何快速成长
  18. 2022-2028年全球避雷器行业收入年复合增长率CAGR为 1.8%
  19. 求解1-1/2+1/3+...1/99-1/100的和
  20. MySQL 8.0原理与实战一网打尽,甲骨文数据库专家硬刚5年之作

热门文章

  1. R假设检验之Breusch-Pagan检验(Breusch-Pagan Test)
  2. python使用argparse解析命令行参数
  3. 酸奶饮料新产品口味测试研究案例
  4. 计算机无法搜索程序,电脑搜索功能不能用的解决方法
  5. Linux aptget 参数,ubuntu下apt-get 命令参数大全
  6. SparkR对R的支持情况
  7. UnicodeEncodeError: ‘locale‘ codec can‘t encode character ‘\u5e74‘ in position 2: Illegal byte seque
  8. python 元组传参 *args 字典传参 **kwargs 的用法
  9. Failed to load module canberra-gtk-module错误的解决方案
  10. 四十二、文件的物理结构(下)