2020秋招知识点查漏补缺(预热期),大量高频大厂面试题集合(有解析)

本文分享了一位双非学校应届毕业生的秋招经历,包括自我提升、面试技巧、项目准备及多投简历策略,最终获得百度等大厂offer。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

之前因为一直在忙于秋招,也没有进行进一步的学习,一直都在复习已有的知识,寻找自己的不足,所以没有更新过博客,现在拿到了百度,猿辅导以及Keep的offer(百度已签),打算结束秋招了,然后就写一篇自己的秋招的经历,对自己秋招时光的一个总结,并且给以后的学弟学妹一点建议吧。

自我介绍

先介绍一下我吧,我是一个双非学校的应届生,但是我并不是从大学一开始的时候就是学习Android的,我大一到大三上学期都在搞ACM竞赛,一直到去年打完青岛现场赛才退役(苦逼的没有拿到牌,如果拿到了可能秋招之路就会好很多吧)。

其实很多的ACMer在退役以后都会转入对算法岗的学习,在我面试的过程中也遇到过很多的面试官问过我这个问题。我个人不是特别想考研的,但是对与算法的学习可能还是需要借助研究生的实验室的资源,在本科可能我不能找到这种的资源,又因为我原来有学习过一点Android,所以我就转入了对Android的学习。

所以可能因为没有学习多久的原因(之前一直在腾讯课堂上跟着学习),我在春招没有找到实习,当时的面试官都是对于我的算法和数据结构这块非常认同,但是对于技术或者说是项目希望我能更好的学习,于是我4-5月都一直在写我的一个小项目SHIN_Music音乐播放器,但是因为这件项目我错过后续的秋招。所以我暑假就只能在家里自己进行学习。在这里要感谢几位学长,对我的关心和指导,给了我很多的面试内推,以及面试的时候的一些建议。

我投的所有公司(只多不少)

我听从了学长的建议投了很多的公司,这样对于我们这种双非学校的学生进入大厂的机会才会多。

image

image

这就是我投的简历,可以看到我有8个走完了所有的流程,但是为什么我现在只有3个Offer,原因很大是因为学校,也可以是说我的能力不能抵消掉学校上与其他人的距离。但是这也是无可厚非的,因为别人的学历是因为原来别人的认真学习的结果,这也是公平的。

用原来我听到过的一句话:很多好的大学学计算机,并不是一开始就是教编程的,是先让你找到计算机的本质----计算。然后从底层开始学起,有可能在毕业的时候你就可以造出一台简单的计算机了。这就是我们和别人的区别。用人公司当然更加倾向与985,211的学生,就像我们倾向于BAT一样。

我的建议(菜鸡的建议,大佬请绕路):
  • 对于秋招一定要把握好,因为秋招的标准会比较低

  • 一定要把基础知识打牢,因为这些是你在大学中学到的,更好的体现你的学习能力

  • 简历一定要真,并且面试之前回顾一遍简历

  • 一定要写一个稍微大一点的项目,这样你才能和面试官有共同话题,面试官才能找到你的优点

  • 多投简历,多积累面试经验,每次面试完以后对自己不会的东西进行查询记录

  • 学习新东西的时候,不断的回顾之前自己会的东西

  • 一定要打有准备的仗。

我的经验

主要是下面几块的复习和准备:

自我介绍

自我介绍这种东西最好还是能够准备一下,因为你有准备的话,你才能够在面试的前一分钟更好的展现出自己,给自己有调节情绪的时间,如果当场想的话,可能就会很匆忙。

先看下我的自我介绍吧(PS:虽然不是很好,但是也展现了我的几个优势)

本人热情随和,具有进取精神和团队精神,擅长动手,有比较强的动手能力,勇于面对困难和挑战,有较好的分析问题与解决问题的能力工作认真负责,积极上进,能够吃苦耐劳,有良好的职业素质;掌握C#、NET、asp.net、 ajax、 xml 、javascript、html、css 、div+css等技术能够熟练使用sql、 mysql oracle数据库有、 winform相关项目开发经验!了解AVA语言能够使用JSP开发各种项目了解SSH框架!毕业后曾在x公司任程序员,通过一年的工作和学习,使我对当前主流的三层、MVC架构,asp.net有了更深的认识,能够熟练地开发相关项目。同时培养了我的团队合作精神和沟通能力,可以让我更快的融入新的工作团队,更好的为公司做出自己的贡献,实现自己的价值。本人致力与追求更好的软件技术,能够在这个行业中取得优秀的成绩,在公司团队中成为中坚的技术人才,为公司创造更多的财富从而让自己成为团队中一个不可或缺的份子

在自我介绍中要更好的体现出自己的优势,让面试官认可你,能找到你们的共同话题。

Android学习知识点

Java基础

  • Java Object类方法

  • HashMap原理,Hash冲突,并发集合,线程安全集合及实现原理

  • HashMap 和 HashTable 区别

  • HashCode 作用,如何重载hashCode方法

  • ArrayList与LinkList区别与联系

  • GC机制

  • Java反射机制,Java代理模式

  • Java泛型

  • Synchronized原理

  • Volatile实现原理

  • 方法锁、对象锁、类锁的意义和区别

  • 线程同步的方法:Synchronized、lock、reentrantLock分析

  • Java锁的种类: 公平锁、乐观锁、互斥锁、分段锁、偏向锁、自旋锁等

  • ThreadLocal的原理和用法

  • ThreadPool的用法和示例

  • wait()和sleep()的区别

Java高阶

  • Java虚拟机,Java运行,Java GC机制(可达性分析法,引用计数法)

  • Java对象的完整生命周期

  • JVM内存模型

  • 进程间通信,线程间通信

  • JVM类加载机制

  • Java引用类型

  • 设计模式:除常用设计模式之外,特别的,反射机制,代理模式

  • HTTP协议和HTTPS协议

  • Socket协议,Socket实现长连接

  • TCP和UDP协议

  • HTTP协议中GET和POST的具体实现

  • 序列化和反序列化

  • 线程池的实现原理

  • 数据库基础知识:多表查询、索引、数据库事务

数据结构及算法

数据结构

  • 栈和队列

  • 数组和链表,自定义一个动态数组

  • Hash表,及Hash冲突的解决

  • 二叉树

  • B+ B-树

  • 基础排序算法:重点 快排、归并排序、堆排序(大根堆、小根堆)

  • 快排的优化

  • 二分查找与变种二分查找

  • 哈夫曼树、红黑树

  • 字符串操作,字符串查找,KMP算法

  • 图的BFS、DFS、prim、Dijkstra算法(高阶技能)

  • 经典问题:海量数据的处理 (10亿个数中找出最大的10000个数 TOP K问题)

算法

  • 分治算法

  • 动态规划

  • 贪心算法

  • 分支限界法

Android基础

  • Application生命周期

  • Android Activity生命周期

  • Android Service、IntentService,Service和组件间通信

  • Activity的onNewIntent

  • Fragment的懒加载实现,参数传递与保存

  • ContentProvider实例详解

  • BroadcastReceiver使用总结

  • Android消息机制

  • Binder机制,共享内存实现原理

  • Android 事件分发机制

  • Android 多线程的实现:Thread、HandlerThread、AsyncTask、IntentService、RxJava

  • ActivityThread工作原理

  • 嵌套滑动实现原理

  • RecyclerView与ListView(缓存原理,区别联系,优缺点)

  • View的绘制原理,自定义View,自定义ViewGroup

  • View、SurfaceView 与 TextureView

  • 主线程Looper.loop为什么不会造成死循环

  • ViewPager的缓存实现

  • requestLayout,invalidate,postInvalidate区别与联系

  • AndroidP新特性

  • Android两种虚拟机

  • ADB常用命令

  • Asset目录与res目录的区别

  • Android SQLite的使用入门

这份笔记是我把所有Android学习所需要的知识点按照分类系统的做了一个汇总,详细可以查看目录表:

Android高级工程师学习核心笔记

*

Android大厂面试题目

拼多多

一面

  1. 自我介绍

  2. 静态变量和实例变量的区别

  3. 重写equals()方法的注意事项;两个list是怎么判断是否相等的?

  4. HashTable和HashMap的区别;是否允许键为null

  5. 数据同步的方法;synchronized可以在对象上加锁吗?在方法上加锁是加在哪个对象上?

  6. 进程间读写文件的同步方式

  7. 了解哪些加密算法;AES和RSA的区别

  8. HTTP响应码

  9. 进程优先级;Android进程优先级

  10. 如何使一个Service处于另一个进程中;进程的服务保活

  11. Touch事件分发机制

  12. 如何实现客户端长连接的?重试策略是怎样的?如何监控HTTP请求的?

  13. 提问问题

二面

  1. 三道题选两道

  2. 大顶堆和栈的概念

  3. 最短路径算法概念

  4. 如何缓存HTTP

HR面

也不能算是HR面吧,简单聊了聊。

  1. 项目介绍;担任的角色

  2. 家庭情况;期望薪资

  3. 在哪里实习?实习的时候拿到过哪些offer

  4. 介绍了拼多多的待遇以及工作制度

三面

  1. 自我介绍;项目问了些

  2. 如果安卓是单线程的,那么如何处理界面刷新和网络操作两个模块

  3. 算法题。

网易

一面

  1. 自我介绍;除了Android还做了其他的哪些项目;

  2. Activity的lauchMode;用过哪些;说了一个他们遇到的问题,让帮分析分析

  3. 知道的网络库有哪些;Volley和OkHttp分别适合用在什么场景下

  4. ImageLoader的三级缓存是怎么实现的;磁盘缓存是怎么实现的;知道哪些图片加载框架

  5. 内存泄漏如何检测;LeakCanary的原理;Handler是如何造成内存泄漏的;内部类都会造成内存泄漏吗?

  6. 参加的阿里中间件比赛是怎样的;简单实现一个生产者-消费者

  7. Java的线程池有哪几种;需要定时任务使用哪种;CachedThreadPoolExecutor是怎样的

  8. 应用通信是如何确保安全的;Https是怎样的;Android如果采用Https通信的话,客户端这边需要有什么

  9. 提问问题

二面

  1. TCP的连接为什么是三次握手,不是两次也不是四次

  2. 对Android框架层了解吗?AMS和WMS了解吗? (说了了解AMS,噩梦由此开始)

  3. Fragment用过吗?Activity如何传参给Fragment?为什么用setArgument传参,而不是使用带有参数的构造器?

  4. 知道系统杀进程吗?如果栈中从底到顶现在是A,B,C,然后系统把应用杀了,重新点击,显示的是哪个Activity?这时如果C里面有Fragment是怎样恢复的?(中途解释了为什么要用setArgument传参,说在走Activity的生命周期之前会先有一个恢复过程,反正听的云里雾里)栈下面的A,B存不存在

  5. Binder机制;为什么Binder是一次拷贝

新美大

一面

  1. 自我介绍

  2. 为什么选用OkHttp?为什么用MVP模式?

  3. ImageLoader的三级缓存怎么做的;OkHttp的磁盘缓存怎么做的?

  4. 如何删除文章的广告之类的?有遇到不符合的情况吗?

  5. HashMap是线程安全的吗?HashMap线程不安全会造成什么现象?如何使HashMap变为线程安全的?

  6. Java的内存模型;GC;遇到过OOM情况吗?有什么可以检测内存泄露的工具

  7. 文章列表用的什么什么控件?ListView如何优化?RecyclerView用过吗?和ListView的区别

  8. 应用中有几个Activity;ViewPager嵌套Fragment怎么用,遇到过什么坑没?

  9. 自定义View时自定义属性该怎么做?

  10. 印象最深刻的项目,或难点

二面

  1. 自我介绍

  2. 界面展示用的ListView还是RecyclerView?如何做文章的过滤的?如果改成别的网站需要怎么做?

  3. ImageLoader怎么实现的?内存缓存使用的是什么策略?

  4. 项目中TCP+HTTP+JSON是怎么回事?

  5. android ui自动化测试

  6. 实习的项目

  7. 对Kotlin的了解;准备让用Kotlin写一个界面的

  8. 给了一个布局,让说说看怎么编写

  9. 了解啥新技术

  10. 问问题

三面

  1. 自我介绍

  2. 为什么选用AES加密?

  3. 全程没聊技术,介绍他所在部门做的事情,问我感不感兴趣,我也提问了一些问题,聊得比较投机

  4. 手上的offer

HR面

问了一些基本信息,手上offer情况,对薪资的要求。

贝贝网

一面

  1. 自我介绍

  2. 三级缓存怎么做的;内存缓存的大小怎么定的;

  3. 实习为什么选择**公司;实习项目是怎么做的

  4. 阿里中间件比赛是怎样的

  5. 问问题

一面比较轻松,二面比较深,毕竟技术合伙人面试的,感觉不太好

二面

  1. 自我介绍

  2. 用了哪些开源库;对Android哪些热点技术研究了;热修复的原理是什么,看过源码吗

  3. 模块化了解吗?如果自己实现怎么实现

  4. 图片三级缓存怎么做的;如何避免OOM;

  5. 有没有对性能优化进行过研究;overdraw如何解决

HR面

  1. 家在哪里;对贝贝的了解;手上的offer;七天出消息

  2. 兴趣爱好

面试题,网上一大把又多又杂。根本不能很好的做一个系统查漏补缺。就算刷完也面上就忘记了。我不知道大家是不是这样的,我经历过所以我明白这些痛苦,一到面试忘光。所有我和朋友在这几年里整理了一份2246页PDF的Android高级架构师面试题合集。现在在这里分享出来,希望对之后大家之后秋招有帮助!

点击领取【Android高级架构师秋招大厂高频面试题目合集】


在这里插入图片描述

结尾

最后的几句话吧

我的秋招结束了,这就是我的总结和感慨。

PS:一定要觉得自己的努力是有价值的

PPS:觉得要放弃的时候想想自己原来的努力

PPPS:努力不一定成功,不努力注定失败

PPPPS:不是幸运不光顾你,而是他买了更好的东西在前面那个路口等你

PPPPPS:要看别人现在有多荣耀,你现在羡慕是没有看到过别人荣耀下的努力

最后一句,这是我对自己一直的暗示(虽然有点不好听,但是是我的真实感觉):不要觉得自己多厉害,你在一些人眼里就是垃圾;不要觉得自己多垃圾,你在一些人眼里就是成功的。

End (人生没有完结)

<think>好的,我现在需要帮助一位计算机专业研二的学生,他想要找Java后端的实习,但项目经历不够,八股文也没准备好。我应该先理清他的问题,然后给出具体的建议。 首先,他的主要问题是项目经历不足和八股文(可能指面试常见的技术问题)准备不充分。这两点对于找实习来说确实很关键,尤其是竞争激烈的Java后端岗位。接下来,我需要考虑如何快速弥补这两方面的不足。 关于项目经历,可能他觉得自己没有足够的实际项目,或者项目不够复杂。这时候,建议他快速构建一些项目,可以是个人项目或者参与开源项目。但时间紧迫,可能需要选择见效快的方式。比如,用主流的框架(Spring Boot、MyBatis)做几个小项目,或者复现一些经典项目,比如电商系统、博客平台。此外,参与开源项目可能对简历有帮助,但可能时间不够,所以更推荐个人项目。 然后是八股文的准备,这部分包括数据结构与算法、操作系统、网络、数据库、Java基础、框架原理等。他需要系统化地复习这些知识点,同时结合刷题来巩固。比如,LeetCode的常见题目,尤其是《剑指Offer》和热门题目。此外,面试常问的问题,比如JVM、多线程、Spring原理等,需要重点准备。可以通过整理面经、使用复习资料来高效学习。 时间管理方面,他可能只剩下几周的时间,需要合理分配时间,每天划分项目开发和复习时间。比如,白天做项目,晚上刷题和背八股文。另外,简历优化也很重要,如何将现有的经历包装得更吸引人,突出技术细节和成果。 还有,他可能需要调整心态,避免焦虑,制定计划并坚持执行。同时,多投递公司,不要局限于大厂,中小公司也可以积累经验。面试过程中不断总结,补缺。 可能的误区:认为项目必须复杂才能写进简历,其实只要展示技术点即可;或者八股文死记硬背,而不理解原理。需要提醒他理解为主,结合实践。 总结下来,具体的步骤可能是:快速构建项目,系统复习八股文,刷算法题,优化简历,积极投递,模拟面试。每个部分需要细化建议,比如项目选择哪些,复习哪些重点知识,如何高效刷题等。</think>作为研二学生,你目前的时间确实紧迫,但通过高效规划和执行仍有机会在实习申请中突围。以下是针对Java后端实习准备的系统性建议,分步骤解决项目经历和八股文两大核心问题: --- ### **一、项目经历快速突围策略** #### 1. **优先构建"技术锚点项目"** - **选择标准**:聚焦企业级技术(Spring Boot+MyBatis+MySQL+Redis),完成1-2个能体现完整技术链条的项目。 - **推荐方向**: - **秒系统**(可简化):实现限流(Redis+Lua)、缓存预热、异步扣库存 - **分布式文件系统**:FastDFS/MinIO集成,实现分片上传、断点续传 - **RPC框架手写**(进阶):基于Netty实现简易版Dubbo,掌握动态代理、服务注册发现 - 在GitHub提交时**高频commit**,展示持续开发过程 - 使用**Docker Compose**部署中间件,体现工程化思维 - 在README用架构图+**QPS压测数据**量化成果 #### 2. **学术项目技术化改造** - 将实验室项目包装为技术驱动型项目: - 例如:"基于知识图谱的问答系统" → "高并发知识询服务:ElasticSearch优化检索性能,Jmeter压测QPS达2000+" - 突出:微服务拆分、性能调优、异常处理等工程实践 #### 3. **参与开源贡献** - 快速贡献路径: 1. 在GitHub搜索标签`good-first-issue`的Java项目 2. 从文档修正、单元测试补充入手(如ShardingSphere、Spring Cloud Alibaba) 3. 在简历中标注"**Apache开源项目贡献者**"(即使小改动) --- ### **二、八股文高效攻克指南** #### 1. **建立知识图谱** - **优先级排序**: ``` 算法(40%) > Java核心(25%) > MySQL(15%) > Redis(10%) > 系统设计(10%) ``` - **必读资料**: - 《Java编程思想》重点章节(并发、集合) - 《MySQL技术内幕》索引+事务章节 - 官方文档:Redis持久化机制、Spring循环依赖解决原理 #### 2. **算法突击方案** - **每日任务**: - 早间:3道LeetCode热门题(编号前500) - 晚间:专项突破(DP/回溯/滑动窗口) - **重点题库**: - 剑指Offer第二版(完整刷3遍) - 力扣周赛前200名选手的解题Repo - **白板训练**:用A4纸模拟手写代码,控制时间 #### 3. **面试话术设计** - **STAR-L技术应答法**: ``` 情境(Situation)→任务(Task)→行动(Action)→结果(Result)→技术深度(Level up) ``` - 示例: "在电商项目中遇到缓存穿透问题时(情境),我通过布隆过滤器+空值缓存方案(行动),使异常请求拦截率提升至99%(结果),后续还对比了RedisBloom模块的实现原理(技术延伸)" --- ### **三、时间管理与执行节奏** #### **4周速成计划表** | 时间段 | 周一~周五 | 周末 | |--------------|---------------------------|--------------------| | 9:00-12:00 | 项目开发(重点技术攻坚) | 模拟面试 | | 13:00-15:00 | 八股文深度学习 | 算法专题突破 | | 15:30-18:00 | LeetCode+剑指Offer | 项目部署优化 | | 19:00-21:00 | 技术博客输出(掘金/优快云) | 面经复盘总结 | --- ### **四、简历优化关键点** 1. **技术金字塔排版**: ```markdown ## 技术能力 ▶ 精通层:Java/Spring Boot/MySQL ▶ 熟练层:Redis分布式锁/ElasticSearch ▶ 了解层:Kubernetes监控体系 ``` 2. **项目成果数字化**: - "通过JVM调优(G1垃圾回收器+线程池优化),使服务GC时间下降40%" - "采用Redis管道批处理,提升数据导入效率300%" --- ### **五、投递策略** 1. **梯度投递法**: - 保:金融科技公司(银/平安科技) 2. **内推技巧**: - 在牛客网找3天内发布的岗位,私信发件人时附带:学校+技术+最快到岗时间 - 邮件标题格式:【急可立即到岗】XX大学硕士-Java后端-可实习6个月+ --- **最后提醒**:每晚进行30分钟技术演讲训练(用手机录屏),重点练习系统设计题的表述逻辑。当前聘季已进入窗口,建议在2周内完成首个项目版本并开始海投,实践中持续迭代比等待完美更重要。每一次面试都是技术缺补的机会,保持螺旋式提升的心态至关重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值