【面小易-面经07】支付宝IoT部门Java研发工程师面试经验

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 阿里云再offer 5000人,IoT事业部求贤若渴!7月9日 19:00,阿里云IoT事业研发部技术大咖在线直招5个岗位,想要进入阿里云吗?快来投递简历吧:https://developer.aliyun.com/special/offerday01

图片无法显
戳我查看详情和投递简历

又到了“金九银十”的招聘季,各位小伙伴们是不是也在忙着准备面试呢找工作呢?在接下来的一段时间里,面小易会为大家分享各种面试经验哦!请持续关注我。今天要和大家分享的是一位面试蚂蚁金服支付宝的Java研发工程师的同学针对于他的一面所做的个人总结和反思。

“我是面小易,机智又聪明。面试不眨眼,Offer不手软。”

我面小易又来啦,今天要和大家一起分享的是一位面试蚂蚁金服支付宝的Java研发工程师的同学针对于他的一面所做的个人总结和反思,虽然他最终止步于二面,没有成功拿到支付宝的Offer,但是从他的反思和总结中能够看到他的努力,也希望大家能够从他的总结中汲取营养。

以下为正文

前言

本周获得了阿里巴巴的面试邀请,应聘的岗位为支付宝内某IoT部门的Java研发工程师。面试时间是通过电话面试1天后通知我的,地点为高端的上海大厦。

接到面试通知后的我,既高兴又有些胆怯。高兴的是:全国数一数二的大厂会给我一份面试机会,证明我的某些地方还是受到了面试人员的初步肯定;胆怯的是早就听说阿里巴巴这样的大厂要求很高,非等闲之辈很难进去,对于自己的技术知识信心感觉不足。

面试当天的下午,按照能到达的面试时间乘着地铁到达了陆家嘴地铁站,由于是第一次参加这样的大厂面试,一路上的我非常紧张和激动。出地铁后,我遍只身向上海中心大厦走去(还好以前无聊时去陆家嘴转悠过几次,陆家嘴区域中最高直上云霄的那坐旋转大厦遍是,要不然又得用步行导航了)。健步如飞的我在办理好了证件后顺利到达第N层楼。出电梯一看,“支付宝”三个大字映入门帘,想着终于见到了每天在手机里要用的支付宝APP了,这感觉没得说啊。

一面经历

面试官是一位年轻的小哥,30来岁左右。面试时,总花了50分钟左右,一直和面试官聊着,尽管这期间我非常紧张。这期间面试官问的主要问题如下:
1.先作个自我介绍。我就简单介绍了下,就几句话的样子,说了下大学时和上一家公司的工作基本内容。

2.HTTPS建立连接的详细过程。这个问题,由于在坐地铁时有复习到,就按照所知道的向面试官回答了,回答的比较详细。

2.1 HTTPS中为什么会要用到CA机构,其目的何在?我回答的是有CA机构可以确保服务端证书的真实性。

2.2 HTTPS它能解决什么问题?我回答的是可以防止抓包。

2.3 HTTPS建立好连接后,每次传输时为什么用的是对称加密了,而不用RSA这种公钥私钥方式加密?我回答的是对称加密的效率更快。

2.3.1 你知道RSA,DES,AES这些算法加密解密所需要耗费的时间吗,有曾经做过DEMO验证过吗?我说的是,RSA应该是最耗时的,对称加密应该更快一点,但确实没做过DEMO验证。

2.4 HTTPS在建立好连接后,每次为什么要生成一个随机数,这样的设计目的有哪些?我回答的是,可以防止重放攻击。

2.5 你之前抓包是用的什么软件抓的?我说wireshark。于是面试官便问我,wireshark的TCP协议格式是什么样的。这个问题我不是很懂,就放弃了,说不知道。

2.6 如果让你自己用httpClient或urlConnection去设计一个HTTPS的请求客户端,你会怎么设计?这个场景我以前没接触过,我说不知道,以前我用httpClient去调用https的API接口时,能直接访问,也就没有深入去研究了,可能是httpClient里自带了CA证书吧。这个问题应该没有答好,或偏离太大,HTTPS问题就停止了,没有继续在HTTPS上问了。

3.我看你以前的项目中有用过Spring框架是吧?我说是的,于是问题就来了。

3.1 那说下Spring项目启动的原理吧!听到问题后的我,发觉转折太大,怎么难度一下就加深了这么多,面试时也忘了复习下Spring的原理。于是我就说了下Spring框架加载的大概,启动后会根据项目中的配置参数,将配好的bean加载到Spring的容器中等等。

3.2 说下Spring源码中你对哪些类或包比较熟悉?又是一个没复习的问题,于是我就说我只记得beanFactory类了,其他的都忘了。

3.3 那说下beanFactory下的几个常用的子类吧? 我说忘了。然后就没有继续问spring下的问题了。

4.说下concurrentHashMap的原理?这个我确实不知道,平时用这个的也很少,我就也就实话实说了。concurrentHashmap的原理不清楚,我以前项目中有用过AtomicInteger,以前看源码时见里面有cas操作之类的,我想concurrentHashmap它是一个线程安全的,应该会用到lock或synchronized这种锁去实现的。

4.1 那说下lock和synchronized底层上有什么区别呢?我说不知道。

5.说下线程池有哪几种?我答的是具体的我忘了,只记得有fix的还有其他什么的。

6.说下你对常用的排序算法还记得吧,说下?(自己感觉已经连续回答了问题都没回答好了,越来越紧张) 算法我就真的忘了差不多了,也没复习,毕业后一两年没玩过这个了。我就说,我只记得冒泡了,其他的几乎都忘了,什么快排、归并啥的都只记得个大概了。

6.1 那写个冒泡排序吧?给我了一张纸,让我写下。我一想,冒泡这算法这么简单我肯定还是会的。于是乎就接过笔和纸刷刷刷几十秒写好后,自己感觉不会出错,就给他看了。面试官看后,说了下嗯。(回来后,我仔细想想了我当时手写的冒泡,有语法错误,写错了,后来想想这个之尴尬呀!)

6.2 看完我写的冒泡后,面试官遍又问我链表还记得吧?我说记得。于时他在纸上画了一个链表,问我如何判断链表存在环路?我回答了一种算法,他说,我那算法时间复杂度太高了,不好,还有别的办法吗?我想了下后,摇摇头告诉他其他的我暂时不知道了。

7.说下以前你在项目中硬件和服务端你负责的通信中Nettry这块的工作内容,你解决了什么事情?我就说了下我当时那个项目我主要负责硬件TCP协议栈的解析工作,以及向硬件端发送指令时的协议封装工作。

7.1 说下bluetooth的连接过程?这个我没接触过,说不知道。

8.然后问了下我大学时期参加的两个进入了国家赛的比赛是干什么的。我说一个是教育部的一个是工信部的,一个是类似ACM的算法比赛,一个是软件设计比赛,当时太紧张了,我也就没过多补充了。

9.问我平时的开发代码风格怎么样,平时用的是什么开发工具?我说是IDEA,风格这个确实不清楚。

10.说一下你在做软件开发中,解决的最大的难题是什么?这个问题,我把从开始到目前做过的软件大脑海里快速闪现了一遍,我去,我还真没想法哪个最有代表性。于是我挑了一个用于在MySQL查询拆分查询的项目,用的多线程+结果聚合。(现在想起来,我要是当时说曾经做的超级抢课软件会不会更好一点,可惜没有如果)

11.然后问我有没有什么问题需要问他的?那时差不多40多分钟过去了。我当时还是很紧张啊,也感觉自己的答题答得不是很好,很多基础性的问题都没有答上来。于是我就直说了,我说我感觉我答得不是很好,对于技术上你能给我一些建议吗?于时面试官小哥说告诉了我曾经也有人告诉过我的问题:广度和深度选择的问题。他说,我目前23岁这个年龄,应该对于基础知识要掌握牢固一点,对于技术知识不要只追求广度,应该追求深度。学习技术时,最好是通过看官方的DEMO或源码学习或文档学习,而通过看博客这种去学习技术,往往学到的都不是最新的,都是其他人会的技术,其价值可能就没有原版的好。

以上就是我在支付宝面试的主要问题汇总。

个人总结

通过这次大厂的面试后,让我知道了“机会只留给有准备的人”这句话说得一点也没错,学过的东西,要温故。对于比较重要的面试,得要认真把学的东西抽出一些时间来复习下,复习时,尤其对于基础性的知道要认真复习,特别是Java多线程、Spring源码、HTTP、TCP、IO、数据库事务、索引原理相关的要有深入的了解。

学习新技术或框架时,最好是参看官方的文档,不要只知道用百度,还要多用Google,当学会某一新技术时,在会用后要多去总结,多思考其原理,算法+基础源码+常用框架原理真的很重要。

面小易说: “机会只留给有准备的人” 这句话是不错的。打铁需要自身硬,我们想要拿到别人梦寐以求的Offer,进入别人不敢奢望的头部互联网公司,就需要自身具有强大的技术能力,不仅仅需要具有扎实的底层知识,需要有知识的广度,也需要有知识的深度以及自己的思考和见解。总结成为一句话,既要仰望星空,也要脚踏实地。

反思

时光荏苒。转眼大学毕业已经快一年了,但感觉自己对于技术在这毕业后的一年内没有多少提升,对于技术的学习有些显得有些浮躁。来上海也一年多了,知识没涨多少,肚子倒是长大了不少,看着看出来时的几块腹肌现在变成了一个大肚子。这一年,惰性涨了,当初激情和活力也锐减了。曾经在大学的那个寒假在寝室里敲着键盘的,因为做出一个抢课评教神器APP而喜悦万分、那个站在三尺讲台与老师同学们进行项目答辩与竞赛、曾经头顶光环在校园里叱咤风云的少年,你去了哪里?

面小易说:当我们走进社会,可能总会有那些不如意,毕竟人生不如意事,十之八九。当面对着比学校生活复杂的多的社会和工作,愿你历经千帆,归来仍是少年。以激情和热情面对这个可能并不完美的世界和自己,也希望各位正在准备备战秋招的同学们加油,理想中的地方终究会到达!

相关文章
|
1月前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
83 2
|
4月前
|
网络协议 网络架构
OSPF邻居关系建立失败?揭秘网络工程师面试中最常见的难题,这些关键步骤你掌握了吗?网络配置的陷阱就在这里!
【8月更文挑战第19天】OSPF是网络工程中确保数据高效传输的关键协议。但常遇难题:路由器间无法建立OSPF邻居关系,影响网络稳定并成为面试热点。解决此问题需检查网络连通性(如使用`ping`),确认OSPF区域配置一致(通过`show running-config`),校准Hello与Dead计时器(配置`hello`和`dead`命令),及核查IP地址和子网掩码正确无误(使用`ip address`)。系统排查上述因素可确保OSPF稳定运行。
85 2
|
4月前
|
运维 Kubernetes 关系型数据库
云计算运维工程师面试技巧
【8月更文挑战第6天】
433 1
|
5月前
|
算法 网络协议 Linux
|
6月前
|
存储 异构计算 内存技术
【硬件工程师面试宝典】常见面试题其一
- Setup时间:时钟前数据需稳定的最小时间。 - Hold时间:时钟后数据需保持稳定的时间。 - 竞争现象:不同路径信号汇合导致输出不稳定。 - 冒险现象:竞争引起的短暂错误状态。 - D触发器实现2倍分频电路。
95 5
|
6月前
|
存储 Java 编译器
技术经验解读:一文带你搞懂java中的变量的定义是什么意思
技术经验解读:一文带你搞懂java中的变量的定义是什么意思
50 0
|
6月前
|
JSON Java 数据安全/隐私保护
一篇文章讲明白Java第三方支付接入案例(支付宝)
一篇文章讲明白Java第三方支付接入案例(支付宝)
319 0
|
6月前
|
存储 Java 测试技术
技术经验解读:【Java】事件驱动模型和观察者模式
技术经验解读:【Java】事件驱动模型和观察者模式
|
6月前
|
算法 Java 编译器
第十五届蓝桥杯Java软件开发大学B组自我经验小结
第十五届蓝桥杯Java软件开发大学B组自我经验小结
55 0
|
6月前
【硬件工程师面试宝典】常见面试题其二
检查单片机上电不运行:电源电压、时钟信号、复位电路、程序烧录。三极管特性:输出特性曲线和转移特性曲线。频率响应指系统对不同频率信号的响应,稳定要求幅度和相位不变。改变响应曲线方法:调整反馈、使用滤波器、改变元件参数。差分运放相位补偿通过在反馈回路加电容,波特图显示补偿效果。基本放大电路类型有共射、共集、共基,差分结构用于抗干扰和提高共模抑制比。电阻电容串联,电容电压为低通滤波,电阻电压为高通滤波。选择电阻考虑阻值、功率、温度系数、精度和尺寸。CMOS电路传递低电平用N管。电流偏置电路通过R1、Q1产生稳定电流。施密特电路回差电压由R1、R2决定。LC振荡器的哈特莱、科尔皮兹、克拉
65 0
下一篇
DataWorks