211 渣硕菜鸟的秋招之路!

2023-10-30 05:30
文章标签 菜鸟 211 渣硕 招之路

本文主要是介绍211 渣硕菜鸟的秋招之路!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

640?wx_fmt=jpeg

扫描下方海报 试读 

640?wx_fmt=jpeg

640?wx_fmt=png

本文是公众号读者SQL的投稿

感谢SQL同学的面试分享

本人方向Java后台开发,经过了秋招初期的0offer后,屡败屡战越挫越勇之后终获offer,结果还算是差强人意。

从10月陆续得到的offer有瓜子二手车、小米、京东、度小满、新浪微博、58同城,就面试通过率来说我还是比较满意的(哈哈哈,安慰自己一波)!


顺利上岸之后,希望回馈大家给予的帮助,所以在这里整理一份面经分享自己的秋招经历。

我的备战期主要在8、9两个月里,期间没有做特别系统的复习,仅仅针对之前的知识的重复学习加深理解。

不论是知识点也好算法题也好,真的特别容易忘,有些东西看过一遍还真就是相当于没看过,因此我后期更求质量(深度)不求数量(广度)。

这里关于秋招的笔试我没有太好的方法,就是多刷刷题LeetCode各种常见题型(DP、贪心、回溯、分治等)刷到吐!在每家公司面试的问题其实有些记不清,所以就把比较有代表性的问题汇总一下。

自我介绍:

我个人不太喜欢做太冗长的描述,其他一些无关紧要的(成绩,研究课题)都不提,主要针对项目经历的介绍

这部分时间不会太长,简单的自己项目的背景,自己负责的模块,在项目中担任的角色,可以捎带一些用到的技术点但不用展开,后面面试官会有选择性的提问。

项目介绍更重要的是让面试官了解你项目的背景,完成了哪些功能,用到了哪些核心技术,核心链路是怎样的。

基础知识篇:

Java基础:这部分问的最多的就是并发、多线程编程。

常见问题有:乐观锁(CAS)和悲观锁(Lock、synchronized)区别以及实现方式(提到Lock的时候会把AQS带出来,讲一下AQS的设计模式,设计原理等)

volatile关键字和synchronized关键字的区别,sleep、wait和yield的区别,多个线程顺序打印的代码实现(考察线程通信和线程api的使用,用concurrent包的组件实现更简单如Semaphore)。

面试官对JVM的考察频率还是很高的,经常第一个问题就是介绍一下内存模型或垃圾收集器(CMS和G1)

所以对GC的过程是要很熟悉的,最好对JVM的参数有所了解,这样可以体现出你从理论到实践的学习过程,这部分在秋招中应该也算个加分项吧。

Spring依赖注入,循环依赖怎么解决的,Spring AOP,SpringMVC原理。

最后关于Java容器这部分就被问的很少了,HashMap和ConcurrentHashMap会偶尔问,可能面试官觉得大家都熟悉容器这部分。

数据库:

数据库索引是必问的,索引失效、组合索引、覆盖索引以及数据结构都是经常问到的

一般会给你三列a,b,c建组合索引问你哪种查询会失效哪种会命中索引,或者问你怎样的场景下适合建索引,慢查询的优化等。

其次是InnoDB和MyISAM两种引擎的问题,主要有他们区别是什么,会带出事务的隔离级别和实现隔离界别的方式(例如可重复读的实现MVCC和锁)等一些问题。

计算机网络:

最最最常问的就是TCP协议了,介绍一下三次握手加四次挥手的过程以及每个阶段的状态。

为什么一定要三次握手?为什么一定要四次挥手?如果ACK没收到怎么办?大量timewait连接怎么办?

另外还会问TCP的拥塞控制、滑动窗口、重传等机制,这部分越细节越好,可以体现出面试者具有更高的计算机基础素养。

基本上计算机网络就是问协议,TCP、UDP、HTTP是最常问的。HTTP的结构,头信息,状态码301和302的区别,HTTP1.0、HTTP1.1、HTTP2.0和HTTPS三者的区别。

操作系统:

进程线程的区别及优缺点、内存管理(虚拟内存,段页式等)、32位操作系统进程内存大小、linux多路复用select,poll和epoll的数据结构等、考察linux的常用的命令(进程端口号,进程ID,内存CPU利用率,vim的一些操作)。

操作系统这部分的确不太熟,提这里的时候我会主动告诉面试官对操作系统了解有限,之后就不再深问了。


算法:

大多为leetcode的中等题,链表、字符串、数组都是常见的题型,我觉得链表和树是写起来最舒服的题型了,通常代码量小,也不用想太多。

具体题目有:

  • 最大子序和(leetcode53)

  • 无重复字符的最长字串(leetcode3)

  • 三数之和(leetcode15,这道题当时字节跳动三面时被问到了,题目忘记了最优解法导致最后挂)

  • 合并两个有序链表(leetcode21)

  • 全排列(leetcode46,47)

  • 二叉树中序后序的非递归

  • 股票买卖的最佳时机(leetcode121,122)

  • LRU缓存(leetcode146)

  • k个一组反转链表(leetcode25)

  • 用队列实现栈(leetcode225,232)

  • 岛屿数量(leetcode200)

大概被问到这些,总之刷题很重要,算法写不出来直接就挂了!

redis:

用过哪些redis的数据结构?场景是咋样的?底层的数据结构怎么实现的了解吗?

内存淘汰策略有哪些?redis的持久化介绍一下,AOF的重写了解吗?

主从模式是怎么做的,数据是怎么同步的,master的选举算法介绍一下?

redis的sentinel介绍一下?redis集群模式寻址问题(一致性哈希,hash槽,优缺点,解决了怎样的问题)介绍一下?

用redis做分布式锁需要考虑哪些问题,写一下redis命令。redis这部分没有问偏工程的问题(大key,热key),比较常规。

微服务:

简历上写了熟悉dubbo和springcloud,dubbo这部分是通过线上专栏学习的,熟悉了dubbo的整个架构在秋招面试中还是吃得开的(毕竟应届生不会太难为你)。

springcloud被问最多的是hystrix(线程池,信号量,断路器,怎么做隔离的,为什么这么做)。

项目篇:

由于时间关系,面试官通常让你挑一个项目来聊

首先是介绍项目的背景,提供了哪些功能服务于哪些系统?

最好以画图的方式详细说明每个服务的核心链路调用,用到的技术(本地缓存,分布式缓存,熔断),服务部署的情况等。

下面还原一下面试场景。

面试官:介绍一个你最熟悉的项目。

我:那就说说我实习期间负责的热搜词服务吧,这个服务的上游是大数据组的实时计算接口,通过http接口调用,返回结果为热度最高的topK个热搜词,按不同类型划分,每个类型的数量可能有倾斜。

服务的下游为客户端后台,进入搜索栏中间页的时候客户端后台将热搜词数据返回到前台去。

本接口做的是启动定时任务得到大数据组的全量热搜词,做黑名单过滤以及相似内容去重,最终将结果集(每个分类都为定量的10个热搜词)放入本地缓存以及同步到redis中,由下游调用。


面试官:你这个热搜词服务里,redis是怎么用的?

我:redis主要为了做历史数据的备份,由于每个批次过滤得到的热搜词结果的数量可能会数据不足,因此需要做一份历史存留,也就是用上个批次的数据补足到当前批次。

面试官:如果你这个redis数据也不足怎么办?

我:本地有一份静态词哦,redis也不足的情况从本地补全。

面试官:你这个服务是部署多台机器吧?那岂不是每一台执行的逻辑都一样,都要更新redis?如果我只要redis更新一次怎么做?

我:(其实这确实是存在的问题,不过当时已经知道面试官考察哪个知识点了,多节点的通信用分布式锁是比较好实现的),答曰:“给加一把锁,多台节点去竞争锁,只有拿到锁的节点可以写数据到redis。

面试官怒:什么锁?用什么实现?怎么个加法?

我:分布式锁,redis可以做,具体为setkeyvaluenxex/px,然后具体巴拉了一顿。

面试官:行吧。下一个问题,你去重怎么做的?

我:用分词器将热搜词切分成多个名词,按名词出现做的Set去重过滤(其实这部分做的很简单,没什么技术点)。

面试官:你用Set做的去重?有没有其他做法?

我:(完全没有头绪,不知如何是好)

面试官:你知道布隆过滤器吗?

:知道呃,巴拉了一顿。

面试官:那怎么没有用到呢?

我:(心里一想,哦确实,的确可优化),但还是找了个理由说“其实去重那部分的数据量不大,用Set实现起来比较简单而且不会太浪费空间”

面试官:哦,那会不会有效率问题呢?

我:不会的!因为Set那部分也是做了本地缓存的哦。

面试官:看你项目里用了Thrift,为什么用?

我:因为搜索这部分包含多个模块,有一部分搜索结果是c++接口做的,通过Thrift来做的java与c++的跨语言的通信(主要还是考察对技术的优缺点是否了解,面试官也没再深问)

面试官:Hystrix怎么用的?为什么用?远离了解吗?

我:对每个跨网络的调用都做了一层熔断,在调用超时或异常时走降级策略,使用线程池技术隔壁tomcat线程和外部接口调用线程,不会因为某些接口的调用阻塞耗尽tomcat线程带来的导致服务不可用问题。断路器提供了对系统等保护,保证了我们接口的响应耗时。

面试官:再问你个问题,同步和异步是?分别适用于怎样的场景?

我:(巴拉一顿解释同步异步),然后同步更快但会阻塞可能会导致超时等问题,异步可以减少整个接口的响应时间,带来更好的用户体验。

面试官:那异步的缺点呢?

我:(一时没想出来呢,面试官开始引导,但忘了怎么说的了)

我:哦,回滚起来会特别麻烦。

面试官:差不多了,异步要比同步实现起来更麻烦,考虑更多问题。

其实不论是在项目提问还是基础知识环节,总是要给自己加戏的(通过不断引出你擅长的技术,来让面试官有侧重点的提问,反而这样不容易被问住)。

比如“浏览器输入网址按回车的过程发生了哪些事?”这个问题,在面试初期我仅仅是从网络协议角度和单机执行业务的流程来描述

直到在一次面试中面试官引出DNS解析得到的应该是反向代理服务器的IP,让我联想到还可以结合微服务(服务发现,负载均衡,NIO,序列号协议,限流,熔断)和分库分表那些知识点来描述(更符合真实的业务场景)

这样就能引出很多知识点,然后面试官会有选择的展开提问,记得一次面试过程中这个问题只说了一半就让我停住了。

此外,针对不会的问题,可以多思考是否用哪些技术可以解决,说错其实也无妨,重要的还是考察应试者的思维方式。

另外,没有太拿得出手的项目就好好准备基础知识(计算机素养很重要),多学习具体场景的技术解决方案。

HR面:

其实校招的HR面一般是不刷人的,常见的问题有你的优缺点是什么?(优缺点要有体现于工作,将缺点从某种角度转化为优点)

你的职业发展规划?(我都是从1-3年,3-5年比较长远的角度说,突出自己有带团队的想法)

如何看待加班的问题?(欲戴皇冠必承其重哈哈哈),目前有哪些机会?

期望的薪资?(我都是实话实说的),如果你和你的leader发生冲突了怎么办?(技术评审,私下讨论解决争端,必要时妥协让步牺牲小我)。

小结:

在秋招的初期,经历了一些失败,分析自己的问题。面试过程中,也会经常被问到不会的问题,常常也是临场思考答案,因此确实答错过好多问题。

面试失败的公司:阿里(对自己项目的理解不够,项目隐含的问题,存在优化的点,欠缺了很多思考),贝壳(基础知识掌握的太浅,不够自信),字节跳动(算法准备不充分,没想起来最优解法)。所以在秋招面试中,千万要做好充分的准备。

最后,在offer选择上,我听取了石杉老师的建议,以大局为重目光长远,选择了更有提升空间的部门,应届生真没必要在意那一两个月的工资!

END

如有收获,请划至底部,点击“在看”,谢

640?wx_fmt=png

欢迎长按下图关注公众号石杉的架构笔记

640?wx_fmt=jpeg

BAT架构经验倾囊相授

这篇关于211 渣硕菜鸟的秋招之路!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/305876

相关文章

【python 图像识别】图像识别从菜鸟走向大神系列1

无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。人工智能教程 一、安装配置(python2.7) 1.pip install pytesseract2、pip install pyocr3、pip install pillow4、安装tesseract-ocr:http

菜鸟入门Docker

初始Docker Docker的概念 Docker的用途 DOcke的安装 Docker架构 配置Docker镜像加速器 Docker常用命令 Docker服务相关的命令。 Docker镜像相关的命令 Docker容器相关的命令 容器的数据卷 数据卷的概念和作用 配置数据卷 Docker应用部署 Docker部署mysql Docker部署tomcat Docker

菜鸟供应链实时数据技术架构的演进

大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 暴走大数据 点击右侧关注,暴走大数据! 本文来自阿里巴巴的缘桥的分享,讲解了菜鸟实时架构的演进过程以及Flink在其中扮演的作用。 我们之前分享过几篇数仓的文章,如下: 《漫谈数仓五重奏》 《用Flink取代Spark Streaming!知乎实时数仓架构演进》 《Flink实时数仓|美团点评实战》 《OneData建设探索之路

[linux命令] 随笔集 center OS 7 蛋疼的改动 一个菜鸟的奋斗shit~~~

2018年7月24日17:22:30 虚拟机查看ip地址  center OS 7  最小化安装. 查看ip地址:使用ifconfig已经不适用了 , 需要使用 ip addr 可以看到 关闭防火墙命令也不是 stop iptables.service 命令了,  看下百度经验吧7 关闭防火墙系列命令 关闭防火墙: systemctl stop firewalld.service

从菜鸟到资深工程师的进阶之路

专访任玉刚:从菜鸟到资深工程师的进阶之路 发表于 2015-12-22 08:25|  11131次阅读| 来源 CSDN|  31 条评论| 作者 夏夏 专访 iOS Android 任玉刚 开发者 CSDN博客 allowtransparency="true" frameborder="0" scrolling="no" src="http://hits.sinajs.cn

反射机制_介绍_Class对象获取_动态操作_构造器_方法_属性JAVA211-212

来源:http://www.bjsxt.com/ 一、S02E211_01反射机制_介绍_Class对象获取 反射机制 Class类介绍 获取Class类的对象 package com.test.reflection;/*** 测试各种类型(class,interface,enum,annotation,primitive type,void)对应的java.lang.

菜鸟杀毒

一、发现木马 发现木马和病毒一般可以借助一些检测软件,如360安全卫士,超级兔子等,在没有这些工具的时候,也只能手工来查毒了。一般电脑出现启动速度变慢,经常弹出窗体,和自动关闭,当出现这些症状的时候就有可能中招了。检测的办法: 1、看进程,先把所有的程序关掉。ctrl+alt+del打开进程管理器,发现比较陌生的或者奇怪的进程如:9.exe,rund1l.exe,log_1.exe,CM

菜鸟黑客入门命令收集(转)

转自《我和黑客有个约会》 1、NET 只要你拥有某IP的用户名和密码,那就用IPC$做连接吧! 这里我们假如你得到的用户是hbx,密码是123456。假设对方IP为127.0.0.1 net use \\127.0.0.1\ipc$ 123456 /user:hbx 退出的命令是 net use \\127.0.0.1\ipc$ /delte

【最新消息】211高校,拟撤销测绘工程专业

近日,中国石油大学(北京)教务处发布《关于公示2024年度拟撤销本科专业的通知》,拟撤销音乐学、建筑学、测绘工程等9个本科专业。     通知内容如下:   根据《教育部高等教育司关于开展2024年度普通高等学校本科专业设置工作的通知》文件要求,经充分征求各教学单位意见,拟撤销音乐学等9个本科专业(见附表),现予以公示。   公示时间2024年8月20日至8月26日,公示期间内如

Eureka原理大起底:从菜鸟到高手,轻松玩转服务注册与发现的艺术!Eureka不只是个名字,它是微服务世界的‘万能钥匙’,解锁无限可能!

第一章 引言 Eureka原理,作为服务发现领域的一个重要理论,对于构建高可用的分布式系统具有指导意义。随着微服务架构的兴起,服务之间的发现和通信变得尤为关键,Eureka原理为解决这一问题提供了有效的方案。本文旨在深入探讨Eureka原理的实践应用,分析其在实际系统中的作用和效果,以期为相关领域的研究和实践提供参考。 在当今的云计算和大数据时代,分布式系统的复杂性和规模都在不断增加,服务之间