从外包到拿下阿里 offer,这 2 年 5 个月 13 天到底发生了什么?

news2025/1/11 17:12:17

开篇介绍

个人背景:

不说太多废话,但起码要让你先对我有一个基本的了解。本人毕业于浙江某二本院校,算是科班出身,毕业后就进了一家外包公司做开发,当然不是阿里的外包,具体什么公司就不透露了,在外包一呆就呆了整整 2 年多,直到现在才从外包离开,如今拿到阿里的 offer 准备入职了。

阐述原因:

在外包公司的两年里,作为一名菜鸡,确实非常合格,技术没什么长进,眼见也没有提升,没规划没未来,让人实在焦虑,之所以开始改变自己也是家庭发生了变故,才让自己开始思考人生。身边很多人感叹过,能从外包逆袭,算是传奇,所以今天想要分享一下个人的经历,希望能够鼓励到一些与我有相似经历的同行。

注意:这次面试过程比较长,内容繁多,在文章中我基本上简述了,文章里的面试题完整版和我个人的总结方法经验(面试学习和刷题笔记)

阿里一角

阿里巴巴 Java 岗面试题分享

1.HashMap 的内部结构?内部原理?和 HashTable 的区别,假如发⽣了 hash 碰撞,如何设计能让遍历效率⾼?

2.讲一讲讲讲 ConcurrentHashMap 吧。

3.讲一下 JVM 虚拟机内存结构,以及它们的作⽤。

4.讲讲 JVM 的类加载过程 &&双亲委派模型。

5.谈谈 Java 的垃圾回收算法。

6.谈谈 Java 垃圾回收的触发条件。

7.synchronized 和 Lock 的区别。

8.volatile 的作⽤,为什么会出现变量读取不⼀致的情况,与 synchronized 的区别?

9.++i 在多线程环境下是否存在问题,怎么解决?

10.讲一讲 Thread.sleep() 和 Thread.yield() 区别?

11.讲讲常⽤的容器类?

12.如何去除 ArrayList 的重复元素?

  • 直接采⽤ HashSet 即可。作为它的参数,然后再 addAll。但这种⽅式不能保证原来的顺序,如果要求顺序,可以使⽤ LinkedHashSet 即可。

13.讲讲 Java 的泛型擦除,泛型主要是为了解决什么问题?如何⽤泛型做 Json 的解析的?

14.谈谈 Java 的 Error 和 Exception 的区别联系。

  • Error 和 Exception 均集成⾃ Throwable,但 Error ⼀般指的是和虚拟机相关的问题,⽐如系统崩溃,虚拟机错误,OOM 等,遇到这样的错误,程序应该被终⽌。⽽ Exception 表示程序可以处理的异常,可以捕获并且可能恢复。

15.说一下软引⽤和弱引⽤的区别?

16.成员变量和静态⽅法可以被重写么?重写的规则是怎样的?

17.内部类访问局部变量的时候,为什么变量必须加上 fifinal 修饰符?

  • 因为⽣命周期不同。

18.什么情况会造成内存泄漏?

19.什么是线程死锁,如何解决?

20.十亿条淘宝购买记录,怎么获取出现最多的前十个 ?

  • 这是一道典型的有限内存的海量数据处理的题目。一般这类题目的解答无非是以下几种:
  • 分治,hash 映射,堆排序,双层桶划分,Bloom Filter,bitmap,数据库索引,mapreduce 等。
  • 具体情形都有很多不同的方案。这类题目可以到网上搜索一下,了解下套路,后面就基本都会了。

21.说一下 Innodb 和 MySIAM 的区别

22.说一下 jvm 内存模型,介绍一下你了解的垃圾收集器

  • 其实并没有 jvm 内存模型的概念。应该是 Java 内存模型或者 jvm 内存结构,这里面试者一定要听清楚问的是哪个,再回答。

23.如何访问链表中间节点

  • 对于这个问题,我们首先能够想到的就是先遍历一遍整个的链表,然后计算出链表的长度,进而遍历第二遍找出中间位置的数据。这种方式非常简单。
  • 若题目要求只能遍历一次链表,那又当如何解决问题?
  • 可以采取建立两个指针,一个指针一次遍历两个节点,另一个节点一次遍历一个节点,当快指针遍历到空节点时,慢指针指向的位置为链表的中间位置,这种解决问题的方法称为快慢指针方法。

23.HR 问

  • 从技术角度来说,你觉得你跟前同事比怎么样?
  • 说一下自己的个人优势。
  • 工作中觉得哪方面欠缺?
  • 为什么想来阿里?阿里的什么方面吸引了你?

面试总结及建议

每一次 Java 面试,其实都是一次学习机会,是对自己技术知识栈的梳理、考核、复盘。我们应该抱着学习的态度,认真对待,找到自己比较薄弱的环节,尽快去查漏补缺学习巩固。对于面试来说,其实也没有太多的技巧可言,面试官主要看重的就是个人能力,无非就是两个方面:

  • 技术广度
  • 技术深度

外包 CRUD 屌丝,是怎样逆袭的?

外包出身的我,究竟有多么菜,多么屌丝呢?还在外包的我,面试时被问到什么是成员变量,我是什么都不知道,相信这种程度大家应该有所感受了。

那作为一个外包 CRUD 屌丝,我是怎么做到逆袭的呢?

01 梳理知识体系,学会查漏补缺

关于知识体系的梳理,我个人主要分为以下 5 个部分,有针对性的,将这 5 个部分逐步击破,那么搞定面试是基本没什么问题了。

  • 并发编程:多线程,高并发,CAS,锁,容器,线程池底层
  • 性能调优:Mysql,IO 及网络调优,算法调优,JVM
  • Spring 全家桶:Spring,SpringMVC,MyBatis,IOC,AOP
  • 缓存数据库:Redis,mongoDB,MySQL
  • 分布式 &微服务:SpringBoot,SpringCloud,docker,maven

02 根据要点,逐个击破(根据大纲内容来进行复习)

1.并发编程(核心技术笔记)

  • Java 多线程技能
  • 对象及变量的并发访问
  • 线程间通信
  • Lock 的使用
  • 定时器 Timer
  • 单例模式与多线程
  • 拾遇增补

2.性能调优(Java 性能调优+MySQL 调优+JVM 调优)

3.Spring 全家桶(Spring 全家桶学习脑图+SpringBoot 使用笔记+源码深度解析)

  • Spring 学习思维脑图(Xmind)

  • Spring 使用笔记+实战文档

4.缓存数据库(MySQL+Redis+mongoDB)

03 最后看面试题来举一反三(刷题刷题刷题,重要事情说三遍)

关于面试刷题也是有方法可言的,建议最好是按照专题来进行,然后由基础到高级,由浅入深来,效果会更好。当然,这些内容我也全部整理在一份 pdf 文档内,分成了以下几大专题:

  • Java 基础部分

  • 算法与编程

  • 数据库部分

  • 流行的框架与新技术(Spring+SpringCloud+SpringCloudAlibaba)

这份面试文档当然不止这些内容,实际上像 JVM、设计模式、ZK、MQ、数据结构等其他部分的面试内容均有涉及,因为文章篇幅,就不全部在这里阐述了,需要的可以私信“面试题”免费下载完整版。

写在文末

作为一名程序员,阶段性的学习是必不可少的,而且需要保持一定的持续性,这次在这个阶段内,我对一些重点的知识点进行了系统的复习,一方面巩固了自己的基础,另一方面也提升了自己的知识广度和深度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/94721.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习100天(一):001 开发环境搭建

机器学习实战需要编写代码,选择一个好的 IDE 能大大提高我们的开发效率。基于 Python 的广泛使用,我们给大家介绍当前最流行的机器学习开发工具包:Anaconda。 一、为什么选择 Anaconda 我们知道 Python 是人工智能的首选语言。为了更好、更方便地使用 Python 来编写机器学…

Linux||后续1:Ubuntu20.04安装MySQL8.0纯命令图文教程(安装+排错+可视化工具+常用命令)

我是碎碎念:) 之前写过一篇用Ubuntu20.04安装MySQL的教程,指路如下 Linux||Ubuntu20.04安装MySQL详细图文教程_Inochigohan的博客-CSDN博客 但方法不是用Linux命令安装的,感觉用着不太顺手😜 索性就重装一遍,纯当是温故而知新好啦…

为什么我们越来越反感「消息通知」?

在日常生活中,我们可以接触到很多「消息通知」: ● 响起门铃声意味着门外有人来访; ● 开车时,仪表盘上显示的发动机温度、行车速度等信息,辅助我们随时了解汽车情况; ● 每当手机电量低于20%时&#xf…

C++ 银行家算法与时间片轮转调度算法结合

一.实验目的 (1) 掌握 RR(时间片调度) 算法,了解 RR 进程调度 (2) 了解死锁概念,理解安全状态,并且理解银行家算法 (3) 利用 RR 进程调度与银行家算法结合,写出一个简单的项目 二.实验原理 2.1 时间片调度算法 在分时系统中都…

SpringBoot整合WebSocket实现简易聊天室

文章目录什么是WebSocket ?WebSocket通信模型为什么需要WebSocketWebsocket与http的关系SpringBoot集成WebSocket什么是WebSocket ? WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动…

Opencv(C++)笔记--腐蚀与膨胀操作、创建滑动条

目录 1--膨胀操作 2--腐蚀操作 3--腐蚀和膨胀的作用 4--创建滑动条 5--实例代码 1--膨胀操作 ① 原理: 将图像(原图像的一部分 A )与核矩阵(结构元素 B )进行运算,将结构元素 B 覆盖图像 A&#xff0…

[附源码]Nodejs计算机毕业设计基于的数字图书馆系统Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分…

离散被解释变量

一、二值选择模型 采用probit或者logit模型 logit y x1 x2 ,nolog r vce(cluster clustervar) ornolog表示不用显示迭代过程vce(cluster cluster)表示运用聚类标准误,由于二值选择模型一般采用稳健标准误的意义不大,所以常常使用聚类标准误。or 表示结…

数据可视化:对比漏斗图多维度分析大学在校实际开销情况

都说80后90后是“苦逼”的一代,他们读小学的时候,上大学免费;等到他们上大学了,读小学免费。可事实真的是这样吗?下面小编用一款数据可视化软件,带你解读一下现在的大学生,开销到底有多少。 漏…

怎样判断一个变量是数组还是对象?

判断的基本方法 1. typeof(不可以) 通常情况下,我们第一时间会想到typeof运算符,因为typeof是专门用于类型检测的,但是typeof并不能满足这样的需求,比如 let a [7,4,1] console.log(typeof(a)) //输出object 复制代码 2. in…

以太网 VLAN的5种划分方式(基于端口、基于MAC地址、基于IP子网、基于协议、基于策略)介绍与基础配置命令

2.8.3 以太网 VLAN(VLAN划分方式) VLAN的划分方式有2.8.3 以太网 VLAN(VLAN划分方式)一、基于端口划分二、基于MAC地址划分三、基于IP子网划分四、基于协议划分五、基于策略划分一、基于端口划分 简述:端口上进行手动…

bitset位图的介绍与使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录bitset的介绍位图的引入位图的概念位图的应用bitset的使用bitset的定义方式bitset的成员函数bitset运算符的使用如有错误,多多指教!bitset的介…

传奇GEE引擎微端架设教程

传奇GEE引擎微端架设教程 GEE引擎架设微端需要准备好微端程序,用网站下载在服务器的版本 Mirserver文件一般都是自带微端程序的,偶尔也有版本没有微端程序那我们只需要到别的版本或者资源把微端程序拉到我们的文件夹里面D:\Mirserver 这个就…

MyBatisPlus常用注解

MyBatisPlus常用注解 TableName:自定义表名 给User实体类添加注解 aplication.yml中添加mp的配置 # 配置mp的日志 mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl# 设置MyBatis-Plus的全局配置global-config:db-config:table…

java基础巩固-宇宙第一AiYWM:为了维持生计,架构知识+分布式微服务+高并发高可用高性能知识序幕就此拉开(三:注册中心balabala)~整起

比如咱们作为客户端进行购物时,那么多服务提供者【服务提供者有很多实例,可能人家已经搞了拆分模块后的分布式集群,那实例就不少啦】,如果用非技术的眼光看就是,你提供多个,我挑一个买,咱们的访…

立足浙江 辐射全国 护航数字经济发展|美创科技亮相首届数贸会

12月11日-14日,首届全球数字贸易博览会在杭州隆重召开。作为国内唯一经党中央、国务院批准的以数字贸易为主题的国家级、全球性专业博览会,首届数贸会由浙江省人民政府和商务部联合主办,杭州市人民政府、浙江省商务厅和商务部贸发局共同承办。…

EtherCAT设备协议详解二、EtherCAT状态机及配置流程

EtherCAT状态机(ESM) EtherCAT状态机定义了每个EtherCAT从站设备的分步设置,并指示了可用的功能。设备可以拒绝来自主站的状态请求,并通过错误指示(AL 状态寄存器中的错误标志)和相关错误代码(A…

Linux高级 I/O

目录 一、五种I/O模型 1. 阻塞式I/O 2. 非阻塞式I/O 3. I/O复用(多路转接) 4. 信号驱动式I/O 5. 异步I/O 二、五种I/O模型的比较 三、I/O复用典型使用在下列网络应用场合 一、五种I/O模型 阻塞式I/O非阻塞式I/OI/O复用(多路转接&a…

ios 计算label宽度方法效率对比

方式1: 设置好label的文字,字号等属性后,调用 self.label.text "111"; self.label.font [UIFont systemFontOfSize:17]; [self.label sizeToFit]; 方式2: 使用字符串的方法计算文字宽度, - (CGRect)boun…

TheFuck—Python写的超实用命令纠正工具

序言 哈喽兄弟们,我们在学习Python的过程中,有这么一款工具,可以轻松纠正我们写错的命令,简直太好用了~ The Fuck 是一款功能强大的、Python编写的应用程序,可用于纠正控制台命令中的错误,非常强大。此外…