写点什么

2021 届毕业生还没找到 Java 开发工作,技术详细介绍

发布于: 2021 年 07 月 30 日

一、阿里 (会员中台)

1. Java


  • 重写 hashcode()是否需要重写 equals(),不重写会有什么后果


2. 并发


  • 自旋锁和阻塞锁的区别

  • 公平锁和非公平锁的区别

  • jdk 中哪种数据结构或工具可以实现当多个线程到达某个状态时执行一段代码

  • 栅栏和闭锁的区别

  • 如何使用信号量实现上述情况


3. JVM


  • 新生代和年老代的 GC 算法分别是什么

  • 标记清除和标记整理的区别

  • 了解过 CMS 收集器吗


4. 网络


  • 解释 HTTPs

  • HTTPs 为什么要用对称加密+非对称加密,相对于只使用非对称加密有什么好处


5. 数据库


  • 给定一个表,其中有三列(员工名称,工资,部门号),找出每个部门工资最高的员工


6. 代码


  • LeetCode 863 二叉树中所有距离为 K 的结点

二、阿里 - 新零售技术事业群(一面挂)

1. 框架


  • 用过哪些 Java 开源框架

  • 讲一讲对 Spring 的理解

  • 看过 IOC 和 AOP 的源码吗

  • 它们底层是如何实现的

  • 用过其他什么框架

  • 了解过分布式或者微服务的开源框架吗

  • 讲一讲对分布式系统模型的理解

  • 分布式系统中有一个节点宕机怎么办

  • 分布式系统如何实现负载均衡


2. 数据库


  • MySQL 和 Oracle 数据库有哪些不同

  • 数据库有哪些锁

  • 表锁和行锁的区别

  • 哪些场景需要加表锁

  • 插入一条数据需要加什么锁

  • 分布式数据库如何保证数据可靠性

  • 了解过 MySQL 的主从复制吗


三、腾讯 - TEG

1. 数据结构


  • B+树与红黑树的区别


2. Java


  • HashMap 的底层数据结构,局限性与线程安全

  • 如何实现线程安全的 HashMap

  • Collections.sychronizedMap 与 ConcurrentHashMap 的区别

  • HashMap 与 ConcurrentHashMap 的性能比较


3. JVM


  • 类的编译过程

  • 类的加载过程

  • JVM 的内存空间

  • JVM 的 GC 机制


4. 操作系统


  • 进程与线程的区别

  • 进程间如何通信

  • 共享内存与 Socket 的优缺点与性能比较

  • 子进程从父进程继承了什么

  • 什么是僵尸进程

  • 线程与协程的区别


5. 网络


  • TCP 的四次挥手

  • TIME_WAIT 状态处在哪一方以及为什么需要它

  • TCP 与 UDP 的区别与可靠性

  • 如何实现 UDP 的可靠传输


6. 数据库


  • 解释 ACID 四大特性

  • 原子性的底层实现

  • 数据库宕机后恢复的过程

  • 如何保证事务的 ACID 特性

  • MySQL 日志类型


7. 分布式


  • 谈谈对分布式系统的理解

  • 分布式数据库的实现

  • 如何保证不同数据库之间的数据一致性

  • 如何实现主从数据库间的同步

四、腾讯 - FIT

1. 网络


  • TCP 三次握手/四次挥手

  • TIME_WAIT 状态

  • 网络延迟大的情况怎么处理

  • HTTP 请求到响应全过程(服务端)

  • HTTP 请求头及其作用

  • HTTP 和 HTTPs

  • HTTPs 的握手过程


五、字节 - 头条(二面挂)

1. 一面


  • 操作系统

  • 讲一讲进程和线程

  • 讲一讲多线程和线程池

  • Linux 的最大进程数限制


WEB


  • 输入 URL 到页面加载的过程

  • 后端怎么处理前端传过来的文件


JVM


  • GC 机制(GC 算法,分代收集,收集器,STW)


代码


  • 给定一个数组 a[N]和一个整数 P,求 a[i] + a[j] + a[k] =P,保证 i<j<k


2. 二面


数据库


  • 身份证如何有效建立索引

  • Innodb 索引类型

  • 聚簇索引和非聚簇索引的区别

  • 索引失效的情况

  • 写一个分页查询


Java


  • JMM 内存模型

  • Classloader 双亲委派机制

  • 讲一下 ThreadLocal

  • 线程间如何通信

六、字节 - 头条 - 客户端开发(已拿 offer)

1. 一面


操作系统


  • 讲一下进程和线程

  • 讲一下线程安全


智力题


  • 两个人抛硬币,先抛的人赢的概率


代码


  • 单链表排序,奇数位升序,偶数位降序


2. 二面


WEB


  • HTML,JS,CSS 的区别

  • 输入 URL 到页面加载的过程

  • HTTP 的长连接和实现原理


Java


  • 创建和终止一个线程

  • 讲一下熟悉的容器类

  • ArrayList 中如何删除某个元素的所有相同元素

  • 讲一下迭代器的实现原理


SQL


  • 学生表 Student (S#,Sname,Sage,Ssex),课程表 Course (C#,Cname),成绩表 SC (S#,C#,score),查询平均成绩大于 60 分的同学的学号和平均成绩


代码


Leetcode 283 移动零


3. 三面


智力题+数据结构+代码


  • 扑克牌的移动


并发


  • 乐观锁和悲观锁的区别

  • 两种锁在 Java 中的具体实现

  • 两种锁的使用场景

七、阿里 - 供应链平台事业部(二面挂)

1. 一面


框架


  • 讲一下 IOC

  • 对 SpringBoot 的理解

  • Mybatis 中 #和 $的区别


Java


  • HashMap 底层实现和扩容机制


代码


  • Leetcode 206 链表反转


数据库


  • InnoDB 和 MyISAM 的区别


其他


  • SQL 注入


2. 二面


算法和数据结构


  • 讲一下红黑树

  • 红黑节点的个数

  • 红黑树的插入删除查询时间复杂度

  • 讲一下 B+树

  • B+树的插入删除查询时间复杂度

  • 讲一下堆的性质及应用场景

  • 建堆时间复杂度

  • 各种排序算法的时间复杂度及稳定性


数据库


  • 讲一下三范式


网络


  • 为什么要三次握手

  • 二次握手有什么问题

  • 三次握手有哪些缺陷

  • TCP 是如何控制流量的

  • 发送方发送频率过高造成丢包,TCP 是如何解决的

  • 讲一下 OSI 网络架构

  • HTTP 在哪一层

  • HTTP 报文结构

  • HTTP 首部字段

  • HTTPs 加密在哪一层实现


操作系统


  • 讲一下虚拟内存

  • 如果访问虚拟地址时,该地址在物理内存中不存在,会发生什么


Java


  • 讲一下 volatile

  • volatile 底层实现

  • static 修饰用法和区别


JVM


  • 讲一下 GC 算法

  • JVM 内存空间


代码


  • Leetcode 2 链表相加


函数式编程


  • 函数式编程和面向对象编程的区别

  • jdk8 为什么要引入函数式编程


机器学习


  • 讲一下梯度下降

  • 梯度下降能保证收敛吗

最后

为什么我不完全主张自学?①平台上的大牛基本上都有很多年的工作经验了,你有没有想过之前行业的门槛是什么样的,现在行业门槛是什么样的?以前企业对于程序员能力要求没有这么高,甚至十多年前你只要会写个“Hello World”,你都可以入门这个行业,所以以前要入门是完全可以入门的。②现在也有一些优秀的年轻大牛,他们或许也是自学成才,但是他们一定是具备优秀的学习能力,优秀的自我管理能力(时间管理,静心坚持等方面)以及善于发现问题并总结问题。如果说你认为你的目标十分明确,能做到第②点所说的几个点,以目前的市场来看,你才真正的适合去自学。


除此之外,对于绝大部分人来说,报班一定是最好的一种快速成长的方式。但是有个问题,现在市场上的培训机构质量参差不齐,如果你没有找准一个好的培训班,完全是浪费精力,时间以及金钱,这个需要自己去甄别选择。


我个人建议线上比线下的性价比更高,线下培训价格基本上没 2W 是下不来的,线上教育现在比较成熟了,此次疫情期间,学生基本上都感受过线上的学习模式。相比线下而言,线上的优势以我的了解主要是以下几个方面:①价格:线上的价格基本上是线下的一半;②老师:相对而言线上教育的师资力量比线下更强大也更加丰富,资源更好协调;③时间:学习时间相对而言更自由,不用裸辞学习,适合边学边工作,降低生活压力;④课程:从课程内容来说,确实要比线下讲的更加深入。


应该学哪些技术才能达到企业的要求?(下图总结)


Java全套资料免费领取方式:戳这里




用户头像

还未添加个人签名 2021.07.03 加入

VX:Lzzzzzz63 领取资料

评论

发布
暂无评论
2021届毕业生还没找到Java开发工作,技术详细介绍