写点什么

每个程序员都必须掌握的 8 种数据结构,2021Java 开发面试解答

发布于: 刚刚

面试前的准备

老实说,我自己平常没事就会看一些面试题,所以我都是直接去面的。不过我还是要建议大家如果准备面试的话,需要做以下准备


  1. 背题:看一看最近的面经文,了解现在公司都在面什么类型的题,准备一些常见题,开背吧!如果一些基础的 js 都不会那问题就有点小大了。

  2. 算法:做一些算法题,leetcode 上面的一二三星就够了,前端算法很简单,基本都是初中数学的难度吧。

  3. 项目:项目回顾,把你做的项目从技术架构到源码都要做到足够了解,至少面试的时候不要被面试官问住了。并且要体现出你在工作中的作用,体现出自驱性(大公司都很看重自驱性)

  4. 亮点:准备亮点,回答问题的时候不用全部回答上来,但是在面试的过程中一定要有亮点(不然你就会得到反馈,面试官说你还行,但是没有过~) 我一般会准备几个点,每个点都保证可以睡上半小时。另外一定要了解得很深入,并且能够用自己的话流畅的表达出来!!(我准备的几点,性能优化、工程化、缓存、http)

  5. 内推:最好找人内推,成功率会提高一些

  6. 练手:先找几家不太想去的公司(规模差不多)练练手,如果第一次面试就去心仪的公司面试,淘汰率会非常高。

  7. 心态:心态很重要,面试不过很正常,不证明你不优秀,只是不适合,总结面试经验,为下一次做准备。

  8. 答题:怎么把自己会的问题说好,这个很关键


  • 逻辑清晰:一定要逻辑清晰,不然即使你知道这个问题的答案,面试官也不会满意,如果你逻辑清晰,即使这个答案不会,面试官也会给你加分

  • 独特理解:现在的面试题大同小异,那么如何体现出你的优势就很重要。结合业务以及你自身的知识储备来讲

  • 深入思考:对每个问题一定要有深入的思考,不然就很难进入大公司了,深度上要有一个拔高才能在面试中获得好的成绩

  • 流畅表达:面试就是一个表达的过程,一些问题心里明白不行,还要流畅的表述出来,基本上如果面试官觉得你表达的很流畅,当你讲到一半就不会再让你说下去了,证明已经通过了


刷题绝对是最重要的,于是问了我在阿里的同学要来了一全套他们公司 P8 整理的系列大厂面试题,刷到天昏地暗,如今既完美收官了,这些面试题还有自己之前收集整理的一份核心架构进阶知识点。存在网盘也没太大的用处,所以在这里免费分享出来给有需要的朋友


字节跳动 4 面(3 面技术+1 面 HR)面试经历

1.1 字节跳动一面

  1. 首先自我介绍,balabala……(此处省略三分钟)

  2. 找一个你的项目说一下,首先你的项目介绍,承担了什么职责,做了哪些工作,难点(因人而异,这就不再赘述了,balabal……(省略三分钟))

  3. 从你项目中看出,你使用的是 mysql,mysql 的 int 数据类型都有哪些?从小到大说一下,各占多少字节?

  4. java 中的 int 都有哪些?字节占多少

  5. 问你一个关于计算机网络的,tcp 的三次握手说一下?

  6. tcp 和 udp 的区别?

  7. 你说你熟悉 linux,我给你一个案例,搜索出 log 文本中出现次数最多的 IP,并且给出次数

  8. 说下 java 的 gc?

  9. 说一下 hashmap 这个数据结构?

  10. 进行一次查找的话 haspmap 的时间复杂度是多少?

  11. 给你一个算法你看一下,有一个无限长的整型数组,从小到大排序,非递增。那么怎么找到数组中一个 key?

  12. 闲聊


之后就问了我最近看了哪本书,学到了什么,最近还在学的什么技术呢?问了我职业规划,兴趣爱好,还说了说公司的语言选型,我后来问了下对于我的面试表现评价,人家不方便说,又问了新人培养等问题。

1.2 字节跳动二面

  1. 自我介绍(balabla)

  2. 然后说一说 mysql 的索引结构吧

  3. 看一道题吧,这个题怎么建立索引


(1)第一道题: mysql 订单表有几个属性:订单 id,用户 user_id、下单日期 date(精确到天)等,请问索引怎样建立 a. 查询某个用户的所有订单 b. 查询某一天的所有订单 c. 查询某一天某个用户的所有订单 (2)第二道题: 10G 文件,每一行一个 uint32 数字。有一台 1G 内存的机器 - A. 找出最大的 k 个数 - B. 找出重复数字 (3)第三道题: 我手中有一堆扑克牌, 但是观众不知道它的顺序。 第一步, 我从牌顶拿出一张牌, 放到桌子上。 第二步, 我从牌顶再拿一张牌, 放在手上牌的底部。 第三步, 重复第一/二步的操作, 直到我手中所有的牌都放到了桌子上。 最后, 观众可以看到桌子上牌的顺序是:13\12\11\10\9\8\7\6\5\4\3\2\1 请问, 我刚开始拿在手里的牌的顺序是什么?用代码实现以下

1.3 字节跳动三面

这个面试官应该是一个总监级别的,说话非常的硬气,肯定是一个资深大佬,一共面了 40 多分钟。常规的面试基础都没问,纯怼项目和算法了。


  1. 自我介绍

  2. 你觉得你目前遇到的困难有哪些?项目上的难点?

  3. 你的项目数据库多大?QPS 多少?哪些 sql 比较慢?(项目上的事我就不说了……balaba)

  4. 那你觉得以后 qps 更大的话,你该怎么设计?

  5. 给你一个算法题,你来看一下思路

  6. 那留两分钟咱们聊一聊,你有什么想问我的

1.4 字节跳动四面

HR 面,大约 35 分钟,主要是问个人职业规划、薪资待遇,以及对字节跳动的期许等等

结尾


这不止是一份面试清单,更是一种”被期望的责任“,因为有无数个待面试者,希望从这篇文章中,找出通往期望公司的”钥匙“,所以上面每道选题都是结合我自身的经验于千万个面试题中经过艰辛的两周,一个题一个题筛选出来再次对好答案和格式做出来的,面试的答案也是再三斟酌,深怕误人子弟是小,影响他人仕途才是大过,也希望您能把这篇文章分享给更多的朋友,让他帮助更多的人,帮助他人,快乐自己,最后,感谢您的阅读。


CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】


由于细节内容实在太多啦,在这里我花了两周的时间把这些答案整理成一份文档了,在这里只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

用户头像

VX:vip204888 领取资料 2021.07.29 加入

还未添加个人简介

评论

发布
暂无评论
每个程序员都必须掌握的8种数据结构,2021Java开发面试解答