近期面试总结

写在前面

公司由于发展原因需要搬到深圳去,而我个人没有更换城市发展的意愿。所以,我又一次开启开心的面试之旅了。


首先第一家面试了跨越物流在帝都新开设的研发中心。人数很少,整个团队处于刚起步状态,大牛很多,主要做地图业务。可惜我在创业公司的经历够多了,就完美的错过了。

第二家面试了京东金融。京东最近招人好像很猛,面试的大厅里坐满了人。我投的应该是企业金融业务研发部,面试官看不太出级别,并没有很套路的去问一些基础题。问了下”秒杀”业务的实现。我本身没有做过类似业务,只能现想现说。基于Redis的原子性来做”秒杀”,API服务部署多个实例,请求从API服务到Redis中间做个队列,大概就是这些思路。然后聊了聊zk和storm
第二天又去二面(因为头天那个部门领导没在,一般都是当天结束)。本以为聊一次就行了,结果一次面试结束后又来一轮,是他们部门领导直接聊的,想让我转他们的数据研发组。(笑哭)

整体上感觉京东的面试过程比较轻松,会针对求职者个人擅长点去聊,容易让求职者发挥。

第三家去面了滴滴。由于滴滴离我家实在太远了,所以基本上是本着学习的态度去面试的。结果当然也是草草收场,一面结束我就闪人了,去找在滴滴的朋友聊天喝咖啡了。(第二天滴滴就“出事”了)

第四家去了美团。这期间京东金融给发了offer(结果没两天东哥就“出事”了)。美团的面试过程也不太顺利,一面基本都是套路题,什么StringBuffer和StringBuilder区别,什么HashMap的结构,什么GC算法,什么线程池的构建参数这种题,网上一搜一大把,建议去面试之前还是刷刷题才好,冷不丁的还真想不起来。二面就聊了下项目经验,然后会根据具体项目里的技术点问一些相关的基础知识。可惜,中间我接了一个重要电话,面试没有完成。这里吐槽一下美团的蚊子真是太能咬人了。

第五家面试了Keep,就是那个健身自律APP。我本身是keep用户,对keep还是挺有好感的。傍晚时分去面试的,一面的技术小哥一进门就低着头,二话不说上来就是一句,咱们先做一道算法题(笑哭)。我不太擅长算法题,并没有给出最优解,好在在提示下进行了优化。然后就是一些JAVA基础题,和项目经验。然后进行二面,二面流程和一面相反,先是JAVA基础,MySQL相关,项目经验,最后是一道算法题。还是我最不擅长的算法题啊,头疼。
总结一下。keep给人的感觉技术氛围浓厚,公司环境也不错,比较Nice。

第六家去了易车网。面的是架构师。聊的大部分都是项目经验和主流框架。也比较符合他们对这个岗位的期望。但我觉得我可能够不到他们的期望。听到他们想把现有.NET+SQLServer的系统迁移到k8s+docker 再上微服务架构,我就觉得我应该走了。

第七家面试了品钛科技。这里要大赞一下品钛的一面,真的是我这几年里遇见的我觉得最牛的人。语速快,又能准确表达语义,对面试者也会进行引导和提示,给出的问题也会有合适的场景和背景。一道问题可以考察出面试者多方面的素质和能力。可惜二面考察JAVA基础没过,评价为对JAVA语言没有建立体系(笑哭)。

总结,品钛的一面大赞,二面很“学院派”,都是大牛。

第八家面试了凤凰网。3个小时过了4面,最后由于hr已经下班了可能还需要改天再约。一面二面都是一些基础问题,数据结构和算法题方面仍然是我不擅长的。三面问了一些关于任务拆分,估时,团队管理上的细节,这些事情我也是今年才有涉猎,对于OKR,sprint等也不有太多经验。四面就业务方向上聊的比较多,对于广告行业(因为我有广告行业从业经验)以及之前用到的技术栈聊一些。


记录一下面试问题。有些同学可以直接看这里。


  • Java基础
    1. int/long 是几个字节 —-> BigInteger 最大值或者相关实现
    2. StringBuffer和StringBuilder区别
    3. Object里的equals方法、hashCode方法,覆盖equals方法
    4. 从hashCode可以引申到HashSet以及HashMap的实现,提到HashMap一般会问Java8里HashMap的改进,一般会说出红黑树,然后就会问一下数据结构的知识。从HashMap也会提到ConcurrentHashMap,这里一般会提到synchronized关键字
    5. 从synchronized开始就会聊到锁的机制,重入锁,公平锁等概念。也会问到synchronized的实现原理。提到synchronized一般也会提到另一个关键字volatile,这个关键字实际编码工作中很少用到(反正我是没用过),了解其作用,结合jvm内存模型更容易讲清楚。
    6. 多线程相关。可问的知识点很多,最基础的就是ExecutorService的构造参数以及Executors的几种实现。
  • JVM
    1. 内存模型。堆内存 /栈内存 /方法区 /本地方法栈 /程序计数器 这些要拎得清。对应的各部分的OOM的情况一般也会问到。栈内存结构,存储哪些数据也要知道,局部变量表,方法return值的逻辑能跟栈内存联系上。堆内存,线程共享,根据GC分代算法会划分成年轻代,老年代。再细致一些划分有Eden区、s0、s1这样。对应的GC也有内存复制算法。在老年代里对应的有标记清除,标记整理清除等算法。方法区内存放静态变量,常量,class信息等,方法区内有一块运行时常量池。
    2. 虚拟机调优。最大内存,初始内存,各区内存,gc log,dump, jstats,jmap等工具使用。然后就是我经常使用kill -3 命令,可好像阿里的同学不太认(挠头)
  • 数据库
    1. 索引。索引类型,索引实现原理,BTREE结构。主键索引和普通索引(innodb引擎)。然后就是会问一些具体的语句看是否会用到索引。需要注意一点or 语法一定不会用索引。
    2. 事务隔离级别。四种,默认是可重复读。这里我建议记住英文名,比较容易理解。read-uncommited就是没提交就会看到,read-commited就是提交了会看到,repeated-read就是你提交了我这边还是看不到。最后就是serializable,完全串行。然后了解一下脏读、幻读的问题。
  • 算法题
    我最不擅长的就是算法题。我一般只能给出最直接能想到的解决办法,然后我建议对时间复杂度的估算还是要有一定感觉才行,最起码问到你给出的算法时间复杂度你得能说的上来。

  • 开放性问题
    这里就看个人简历里提到过的技术框架和待招岗位的技术框架选型了。像我就被问到过Storm,zk,kafka,netty,redis,spring cloud,docker,k8s等常见常用的框架或组件。关于分布式还被问到过CAP定理,redis sentinel集群和redis 3.0+ 提供的集群方式,一致性哈希算法,分布式事务一致性(一般希望听到两段式提交,但我倾向于事务拆分的方案)等等的话题。关于这些东西,我建议没实际用过的技术不要写到简历上,大家毕竟是找工作,不是找学校。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值