|
| 1 | + |
| 2 | + |
| 3 | +## 华为|字节|腾讯|京东|网易|滴滴面经分享(6个offer) |
| 4 | + |
| 5 | +本文是一位读者的面经分享。希望这篇文章的内容可以对小伙伴们有帮助! |
| 6 | + |
| 7 | +**每个人成功的经历都不可复制, 我们可以借鉴吸收别人的经验为己所用。** |
| 8 | + |
| 9 | +另外,把自己上岸的经历分享出来是一件非常棒的事情,我在这里实名为这位读者点个赞👍 |
| 10 | + |
| 11 | +### 个人介绍 |
| 12 | + |
| 13 | +目前大三,本科就读于电子科技大学。 |
| 14 | + |
| 15 | +我在大一进入学校实验室学习,负责数据收集、日常开发、NLP。用到的技术包括: |
| 16 | +- 语言:Java、Python |
| 17 | +- 技术: |
| 18 | + - 爬虫:协程、异步OI、正则表达式 |
| 19 | + - 后端:SpringBoot、MyBatis、MySQL |
| 20 | + - 前端:HTML、CSS、JavaScript、BootStrap |
| 21 | + - 深度学习:Pytorch、Keras |
| 22 | + |
| 23 | +在实验室接触的比较广泛,不过感觉不够深入,于是在大二下开始深入后端技术。 |
| 24 | + |
| 25 | +我在大二下开始做了些开源项目并深入Java相关技术,深入学习了: Java核心技术、Java虚拟机、Java并发编程、设计模式、MySQL、Spring、SpringBoot、Mybatis。 |
| 26 | + |
| 27 | +在大三上期,11月开始准备Java实习相关事务: |
| 28 | + |
| 29 | +一个月的面试后,陆续拿到了字节,网易、京东、滴滴、腾讯和某区块链公司的6个实习offer。 |
| 30 | + |
| 31 | +### 复习经历 |
| 32 | + |
| 33 | +因为之前就深入学习过,所以总的复习时间也不长,大概是一周左右,后面是通过边面试边查漏补缺的方式来补短板。 |
| 34 | + |
| 35 | +> 前两天的复习内容: |
| 36 | +
|
| 37 | +#### Java基础 |
| 38 | + |
| 39 | +- 面向对象特性:封装,多态(动态绑定,向上转型),继承 |
| 40 | +- 泛型,类型擦除 |
| 41 | +- 反射,原理,优缺点 |
| 42 | +- `static`,`final` 关键字 |
| 43 | +- `String`,`StringBuffer`,`StringBuilder`底层区别 |
| 44 | +- BIO、NIO、AIO |
| 45 | +- `Object` 类的方法 |
| 46 | +- 自动拆箱和自动装箱 |
| 47 | + |
| 48 | +#### Java集合框架 |
| 49 | + |
| 50 | +- List :`ArrayList`、`LinkedList`、`Vector`、`CopyOnWriteArrayList` |
| 51 | +- Set:`HashSet`、`TreeSet`、`LinkedHashSet` |
| 52 | +- Queue:`PriorityQueue` |
| 53 | +- Map:`HashMap`,`TreeMap`,`LinkedHashMap` |
| 54 | +- fast-fail,fast-safe机制 |
| 55 | +- 源码分析(底层数据结构,插入、扩容过程)、线程安全。 |
| 56 | + |
| 57 | +#### Java虚拟机 |
| 58 | + |
| 59 | +- 类加载机制、双亲委派模式、3种类加载器(`BootStrapClassLoader`,`ExtensionClassLoader`,`ApplicationClassLoader`) |
| 60 | +- 运行时内存分区(PC,Java虚拟机栈,本地方法栈,堆,方法区(永久代,元空间)) |
| 61 | +- JMM:Java内存模型 |
| 62 | +- 引用计数、可达性分析 |
| 63 | +- 垃圾回收算法:标记-清除,标记-整理,复制 |
| 64 | +- 垃圾回收器:比较,区别(Serial,ParNew,Parallel Scavenge ,CMS,G1)Stop The World |
| 65 | +- 强、软、弱、虚引用 |
| 66 | +- 内存溢出、内存泄漏排查 |
| 67 | +- JVM调优,常用命令 |
| 68 | + |
| 69 | +#### Java并发 |
| 70 | + |
| 71 | +- 三种线程初始化方法(`Thread`、`Callable`,`Runnable`)区别 |
| 72 | +- 线程池(`ThreadPoolExecutor`,7大参数,原理,四种拒绝策略,四个变型:Fixed,Single,Cached,Scheduled) |
| 73 | + + 有界、无界任务队列,手写`BlockingQueue`。 |
| 74 | + + 乐观锁:CAS(优缺点,ABA问题,DCAS) |
| 75 | + + 悲观锁: |
| 76 | + - `Synchronized`: |
| 77 | + - 使用:方法(静态,一般方法),代码块(this,`ClassName.class`) |
| 78 | + - 1.6优化:锁粗化,锁消除,自适应自旋锁,偏向锁,轻量级锁 |
| 79 | + - 锁升级的过程和细节:无锁->偏向锁->轻量级锁->重量级锁(不可逆) |
| 80 | + - 重量级锁的原理(`monitor`对象,`monitorenter`,`monitorexit`) |
| 81 | + - `ReentrantLock`:和`Synchronized`区别?(公平锁、非公平锁、可中断锁....)、原理、用法 |
| 82 | + + `ThreadLocal` :底层数据结构:`ThreadLocalMap`、原理、应用场景。 |
| 83 | + + `Atomic` 类(原理,应用场景) |
| 84 | + + AQS:原理、`Semaphore`、`CountDownLatch`、`CyclicBarrier` |
| 85 | + + `Volatile`:原理:有序性,可见性 |
| 86 | +> 第三天的复习内容: |
| 87 | +
|
| 88 | +#### MySQL |
| 89 | + |
| 90 | +- 架构:Server层,引擎层(缓存,连接器,分析器,优化器,处理器) |
| 91 | +- 引擎:InnoDB,MyISAM,Memory区别 |
| 92 | +- 聚簇索引,非聚簇索引区别(从二叉平衡搜索树复习(AVL,红黑树)到B树,最后B+树) |
| 93 | +- MySQL、SQL优化方法 |
| 94 | +- 覆盖索引,最左前缀匹配 |
| 95 | +- 当前读,快照读 |
| 96 | +- MVCC原理(事务ID,隐藏字段,Undo,ReadView) |
| 97 | +- Gap Lock、Next-Key Lock、Record Lock |
| 98 | +- 三大范式 |
| 99 | + |
| 100 | +#### SQL |
| 101 | + |
| 102 | +- 常用SQL |
| 103 | +- 连接:自连接,内连接(等值,非等值,自然连接),外连接(左,右,全) |
| 104 | +- Group BY 和 Having |
| 105 | +- Explain |
| 106 | + |
| 107 | +> 第四天的复习内容: |
| 108 | +
|
| 109 | +#### Spring |
| 110 | + |
| 111 | +- AOP原理(JDK动态代理,CGLIB动态代理)和 IOC原理 |
| 112 | +- Spring Bean生命周期 |
| 113 | +- SpringMVC 原理 |
| 114 | +- SpringBoot常用注解 |
| 115 | + |
| 116 | +#### 设计模式 |
| 117 | + |
| 118 | + + 三种类型:创建、结构、行为 |
| 119 | + + 单例模式:饿汉,懒汉,DCL |
| 120 | + + 简单工厂,工厂方法,抽象工厂 |
| 121 | + + 代理模式 |
| 122 | + + 装饰器模式 |
| 123 | + + 观察者模式 |
| 124 | + + 策略模式 |
| 125 | + + 迭代器模式 |
| 126 | + + .... |
| 127 | + |
| 128 | +> 第五天的复习内容: |
| 129 | +
|
| 130 | +#### 计算机网络 |
| 131 | + |
| 132 | ++ OSI模型、TCP/IP模型 |
| 133 | ++ TCP和UDP区别 |
| 134 | ++ TCP可靠性传输原理:重传、流量控制、拥塞控制、序列号与确认应达号、校验和 |
| 135 | ++ 三次握手、四次挥手过程、原理 |
| 136 | ++ timewait、closewait |
| 137 | ++ HTTP |
| 138 | + + 报文格式 |
| 139 | + + 1.0 1.1 2.0 |
| 140 | + + 状态码 |
| 141 | + + 无状态解决(Cookie Session原理) |
| 142 | ++ HTTPS |
| 143 | + + CA证书 |
| 144 | + + 对称加密 |
| 145 | + + 非对称加密 |
| 146 | ++ DNS解析过程,原理 |
| 147 | ++ IP协议、ICMP协议(Ping、Tracert)、ARP协议、路由协议 |
| 148 | ++ 攻击手段与防范:XSS、CSRF、SQL注入、DOS、DDOS |
| 149 | + |
| 150 | +> 第六天的复习内容: |
| 151 | +
|
| 152 | +#### 操作系统 |
| 153 | + |
| 154 | ++ 进程、线程和协程区别 |
| 155 | ++ 进程通信方式(管道,消息队列,共享内存,信号,信号量,socket) |
| 156 | ++ 进程调度算法(先来先服务,短作业优先,时间片轮换,多级反馈队列,优先级调度) |
| 157 | ++ 内存管理:分页(页面置换算法:手写LRU)、分段、虚拟内存 |
| 158 | + |
| 159 | +> 第七天和以后的复习内容: |
| 160 | +
|
| 161 | +每天做点刷算法题(剑指offer、LeetCode 面试Hot题) +查漏补缺。 |
| 162 | +### 字节跳动 |
| 163 | + |
| 164 | +#### 第一面 |
| 165 | + |
| 166 | +1. 自我介绍,介绍项目 |
| 167 | + |
| 168 | +2. 协程、线程、进程区别 |
| 169 | +3. 手写LRU(要求用泛型写)、手写DCL |
| 170 | +4. DNS解析过程 |
| 171 | +5. 输入一个URL到浏览器,整体流程 |
| 172 | +6. 谈谈Java虚拟机你的认识?垃圾回收算法?垃圾回收器 |
| 173 | +7. 知道哪些Java的锁?CAS的缺点? |
| 174 | + |
| 175 | +#### 第二面 |
| 176 | + |
| 177 | +1. 自我介绍、介绍项目 |
| 178 | +2. 手写最大堆 |
| 179 | +3. 设计模式了解吗?几大类型?谈谈工厂模式? |
| 180 | +4. 谈一下Java集合框架?HashMap线程安全的吗?会出现什么问题? |
| 181 | +5. 说说MySQL的架构? |
| 182 | +6. InnoDB和MyISAM区别? |
| 183 | +7. 知道聚簇索引和非聚簇索引吗?B树和B+树区别? |
| 184 | +8. 一道LeetCode难问题:接雨水(动态规划解决) |
| 185 | + |
| 186 | +#### 第三面 |
| 187 | + |
| 188 | +1. 自我介绍、介绍开源项目 |
| 189 | +2. 线程池了解吗?原理?可以写个BlockingQueue吗? |
| 190 | +3. 说说fast-fail和fast-safe? |
| 191 | +4. 了解死锁吗?怎么解决? |
| 192 | +5. 进程间通信方式?哪种最高效? |
| 193 | +6. 说说MYSQL优化策略? |
| 194 | +7. 说了一下部门介绍,主要业务,说可能会转GO等等 |
| 195 | + |
| 196 | +#### 第四面(HR) |
| 197 | + |
| 198 | +1. 介绍自己 |
| 199 | +2. 团队怎么协作?有没有矛盾?怎么解决的? |
| 200 | +3. 入职时间?实习多久? |
| 201 | + |
| 202 | +### 华为 |
| 203 | + |
| 204 | +#### 第一面 |
| 205 | + |
| 206 | +1. 自我介绍 |
| 207 | +2. 谈项目(谈了很久) |
| 208 | +3. HTTP 的无状态怎么解决?(Cookie Session) |
| 209 | +4. TCP如何保证可靠性传输?(校验和,序列号和确认应答号,重传,流量控制,拥塞控制) |
| 210 | +5. ARP过程? |
| 211 | +6. 进程调度算法? |
| 212 | +7. 一道动态规划题目:不同路径 |
| 213 | + |
| 214 | +#### 第二面 |
| 215 | + |
| 216 | +1. 自我介绍 |
| 217 | +2. 谈项目(你觉得收获最大的项目) |
| 218 | +3. 谈谈Spring AOP 和 IOC |
| 219 | +4. 谈谈你知道的MySQL所有内容 |
| 220 | +5. 手写个归并排序 |
| 221 | +6. 谈谈你对分布式系统的认识? |
| 222 | +7. 谈谈你对华为的认识?华为的文化和价值观? |
| 223 | + |
| 224 | +#### HR |
| 225 | + |
| 226 | +技术面试都通过了,问HR怎么样,说应该没问题,等了一星期offer,最后发offer的时候,HR说我的性格测试没通过,Offer审批不下来,人傻了。因为华为在成都,字节在北京,而且技术官的意向是很稳能进华为,我想着在家近的地方实习,在等待的一周中就把字节拒了,最后华为没发到offer,直接架空,崩溃!第一次找实习没太多经验,策略不对,心里很难受,不过调整了一下,继续了新的面试 |
| 227 | + |
| 228 | +### 网易 |
| 229 | + |
| 230 | +#### 第一面 |
| 231 | + |
| 232 | +1. 自我介绍 |
| 233 | +2. 介绍一个对自己影响深刻的项目 |
| 234 | +3. 说说进程间调度的算法 |
| 235 | +4. 说说匿名函数 |
| 236 | +5. 说说协程、线程、进程。 |
| 237 | +6. 你对游戏引擎了解多少? |
| 238 | +7. 手写地杰斯特拉算法? |
| 239 | +8. 了解A*算法吗? |
| 240 | +9. 说说Python和Java的区别? |
| 241 | +10. Java是怎么进行垃圾回收的? |
| 242 | +11. 然后聊了很多生活上的问题,非技术问题。 |
| 243 | + |
| 244 | +#### 第二面 |
| 245 | + |
| 246 | +1. 自我介绍 |
| 247 | +2. 介绍项目 |
| 248 | +3. 说说深度优先搜索算法、回溯算法 |
| 249 | +4. 一道算法题:一个走迷宫问题,DFS+回溯解决。 |
| 250 | +5. 你对C熟悉吗?Lua使用过吗? |
| 251 | +6. 介绍业务,主要工作内容。 |
| 252 | + |
| 253 | +#### HR面 |
| 254 | + |
| 255 | +1. 自我介绍 |
| 256 | +2. 介绍一个项目中遇到的问题,怎么解决的? |
| 257 | +3. 介绍一下博客?开源项目?为什么花时间做这些? |
| 258 | +4. 大学最成功的一件事? |
| 259 | + |
| 260 | +### 滴滴 |
| 261 | + |
| 262 | +#### 第一面 |
| 263 | + |
| 264 | +1. 自我介绍、介绍项目 |
| 265 | +2. Java面向对象的三大特性? |
| 266 | +3. 了解Java哪些锁?Synchronized优化内容?锁升级过程? |
| 267 | +4. 谈谈Java虚拟机?类加载机制? |
| 268 | +5. 知道双亲委派模式吗?有什么好处? |
| 269 | +6. Java运行时内存分区? |
| 270 | +7. 死锁了解吗?如何解决? |
| 271 | +8. 哪些对象可以作为GC ROOTS? |
| 272 | +9. 了解的设计模式?手写一下DCL吧 |
| 273 | + |
| 274 | +#### 第二面 |
| 275 | + |
| 276 | +1. 自我介绍 |
| 277 | +2. 介绍项目(难点以及怎么解决的?) |
| 278 | +3. 谈谈MySQL的各种引擎? |
| 279 | +4. 覆盖索引和非覆盖索引区别? |
| 280 | +5. MYSQL优化方法有哪些? |
| 281 | +6. 讲讲HashMap的原理,put过程?resize过程?线程安全吗?死循环问题? |
| 282 | +7. 了解什么中间件吗? |
| 283 | +8. 讲讲Java里面的锁? |
| 284 | +9. 一道算法题:最长公共子串 |
| 285 | + |
| 286 | +#### HR面 |
| 287 | + |
| 288 | +1. 自我介绍 |
| 289 | +2. 到岗时间 |
| 290 | +3. 自己的优势 |
| 291 | +4. 大学最失败的一件事 |
| 292 | +5. 对加班的看法 |
| 293 | + |
| 294 | +### 京东 |
| 295 | + |
| 296 | +#### 第一面 |
| 297 | + |
| 298 | +1. 自我介绍 |
| 299 | +2. 谈项目 |
| 300 | +3. TCP如何保证可靠传输?拥塞控制算法? |
| 301 | +4. 讲讲Spring的AOP? |
| 302 | +5. SpringBoot常用哪些注解? |
| 303 | +6. 谈谈Java虚拟机? |
| 304 | +7. 垃圾回收算法有哪些? |
| 305 | +8. 了解哪些垃圾回收器?讲一下CMS垃圾回收过程 |
| 306 | +9. 算法题: |
| 307 | + 1. 两个栈实现队列 |
| 308 | + 2. 最近公共祖先节点 |
| 309 | + |
| 310 | +#### 第二面 |
| 311 | + |
| 312 | +1. 自我介绍 |
| 313 | +2. 讲讲Java集合框架,HashMap原理。 |
| 314 | +3. 知道哪些锁? |
| 315 | +4. 谈谈公平锁和非公平锁? |
| 316 | +5. Synchronized和ReentrantLock区别 |
| 317 | +6. MySQL的索引为什么快?有哪些索引?原理数据结构? |
| 318 | +7. MySQL有哪些优化的策略? |
| 319 | +8. 死锁了解吗? |
| 320 | +9. ThreadLocal了解吗?原理? |
| 321 | +10. 手写一个堆排序。 |
| 322 | +11. 一道算法题:完全平方数(动态规划) |
| 323 | + |
| 324 | +#### HR面 |
| 325 | + |
| 326 | +1. 自我介绍 |
| 327 | +2. 多久可以到岗?实习时间? |
| 328 | +3. 对加班看法? |
| 329 | +4. 如何团队分工的? |
| 330 | + |
| 331 | +### 腾讯 |
| 332 | + |
| 333 | +#### 第一面 |
| 334 | + |
| 335 | +1. 自我介绍 |
| 336 | +2. 介绍项目 |
| 337 | +3. 说说协程和线程区别? |
| 338 | +4. Java虚拟机的作用?垃圾回收的过程? |
| 339 | +5. 了解的垃圾回收器? |
| 340 | +6. 手写快排 |
| 341 | +7. 算法题:按K位反转链表 |
| 342 | +8. 一百亿个数,n个机器,怎么排序?(桶排序) |
| 343 | + |
| 344 | +#### 第二面 |
| 345 | + |
| 346 | +1. 自我介绍 |
| 347 | +2. 介绍项目 |
| 348 | +3. TCP和UDP区别?如何保证可靠性? |
| 349 | +4. HTTP的状态码记得哪些? |
| 350 | +5. ICMP是哪层的?有什么用? |
| 351 | +6. 会哪些框架? |
| 352 | +7. Spring的AOP认识? |
| 353 | +8. MySQL InnoDB和MyISAM区别? |
| 354 | +9. 谈谈各种索引?为什么用B+树不用B树? |
| 355 | +10. 死锁的条件?如何解决? |
| 356 | +11. OOM怎么排查? |
| 357 | +12. 介绍业务 |
| 358 | + |
| 359 | +#### HR面 |
| 360 | + |
| 361 | +1. 自我介绍 |
| 362 | +2. 多久能来实习?实习多久? |
| 363 | +3. 加班看法? |
| 364 | +4. 看你掌握技术挺多,如何快速学习一个技术的? |
| 365 | + |
| 366 | +### 总结 |
| 367 | + |
| 368 | +因为之前学的也比较深入,复习时间也没用太多,主要就是写点算法题保持手感。 |
| 369 | + |
| 370 | +面试中遇到的问题,9成都已经复习了,而且也比较基础,也都在掌握之中。 |
| 371 | + |
| 372 | +像中间件、微服务这些我没写在简历上,不是很会,面试官也不会刻意刁难你,实习的话,感觉大厂可能更注重基础和对知识的深入度,面试了一个月收货还是挺多的,希望总结一下面经,帮到更多的人~ |
| 373 | + |
| 374 | +准备大厂面试的话,注重基础,多练算法题,基本上就没问题了!加油! |
0 commit comments