大家好,我是君哥。今天分享一个老弟,被“毕业”后的求职经历。
在老东家干了 6 年,发展一般,很想出去,但是一直没有合适的机会,只好一边准备面试一边学习。让我没有想到的是,突然收到了“毕业”通知,当然,不光是我,而是整个团队。
毕业,对于我这样的老员工来说是不错的结果,因为正好我也想出去,而且这次公司还能给不少补贴。
回家住了一段时间后,我开始了疯狂面试,今年的求职环境真的让人头疼,不要说张薪了,平薪都很难。下面介绍我面试过的公司。
首先介绍下个人情况,双非本科,写码 8 年,其中 6 年在金融行业,算是有行业积累,但是核心业务并没有接触到。在金融行业工作,技术的提升是比较小的,好多流行的技术栈没有用过。
上来就是一套笔试卷,下面是其中两套笔试题:
面试心得:
创业小公司,一上来就笔试题,而且用浏览器笔试回答过程还有视频监控,侵犯隐私,感觉有点恶心;
果断遮住,这公司面过了也不想去;
但太久没刷题,只做下题找下状态。
SpringBoot 怎么启动的;
RabbitMQ 发消息哪几种方式;
会哪些设计模式,策略模式在项目中怎么用的;
线程怎么创建的,有哪几种方式;
有哪几种线程池实现方式;
哪些场景用消息队列;
JVM 参数怎么调优;
反射怎么用。
面试心得:
一面20分钟结束,挂!基本都能答上一点点,但是思路不清晰,语言组织吞吞吐吐,技术理解不透彻,太久没面试,紧张。
自我介绍,项目经历;
项目流程是怎样的,你做过的项目,讲讲哪块是你做的?
Synchronized 是怎样实现的,偏向锁标志存哪里,为什么升级到重量锁慢,偏向锁有个开关,如果默认开启有什么缺点?
Synchronized 为什么慢,cas是不是操作系统执行的,他比 Synchronized 快还是慢为什么?
CAS 平时怎么用的,会有什么问题,为什么快,如果我用 for 循环代替 cas 执行效率是一样的吗?
volatile 哪些场景会用到,原理是什么,除了在单例模式中用到,还有什么地方?
还用过哪些分布式组件,Redis 集群怎么搭建的,有哪些配置,哈希槽概念,hash 是怎么分布的?
Redis 一个请求过去,是在客户端还是在服务端,通过 key 找到对应的数据?
如果 Redis 集群特别慢,有什么排查方法?
还有其他哪些分布式组件,你最熟悉哪一块?
AtomicInteger 自增到一万以后,怎么归零;
源码看过哪些,讲讲。
面试心得:一面20分钟挂,好几个没答上来!
自我介绍;
你工作这么多年了,哪些技术栈比较擅长,你觉得你做的好的项目有哪些,或者说业务复杂的地方在哪里,怎么解决的?
说一下贷前,贷中,贷后的流程,你负责哪些模块,讲讲实现流程,有没有技术难点,业务解决难点?
说一下CAS怎么用的,会有哪些问题,Synchronized呢;
说一下你对Spring的理解;
我们知道Redis很快,访问是在内存中的,除了这个原因,还有没有其他原因?
你是怎么理解分布式架构的,怎么做的微服务?
有没有参与过开源项目的贡献?
你是怎么学习一门新技术的,方法是什么?
Java有哪几种基本数据类型?float和double的区别是?
String和StringBuffer、StringBuilder的区别是?
List和Set的区别是?
HashMap的底层结构是?
MyBatis一级缓存和二级缓存的区别是?
说一下你对设计模式的理解,怎么根据项目的业务去选哪些设计模式,根据什么情况去做的设计模式?
SpringCloud你用过哪些,怎么用的,为什么选择SpringCloud组件?
你用过Gateway,那么Gateway怎么做的动态路由?
说一下NIO,为什么快,比传统阻塞io?
MySQL索引建立的时候需要注意哪些?
MySQL查询需要注意哪些事项?
MySQL一句sql执行语句,从执行到返回结果,mysql做了哪些事情?
MySQL字段char 和 varchar的区别是啥,varchar(30)代表什么意思?
MySQL 查询平时怎么优化的?
消息中间件用的什么?RabbitMQ?有哪几种发送消息的模式?
如果访问一个页面报错,那么怎么开始排查最终定位问题?
Spring的循环依赖怎么实现的?
你对代码或者系统,做过哪些优化?
系统慢,比如cpu高或者内存高,是怎去排查的问题?
Redis有哪几种数据类型,这几种数据类型应用场景分别是怎样的?
Redis怎么保证事务?
Spring事务的传播机制,是怎样的?
如果有一个select方法,有Spring事务注解,这里面调用了一个update数据库的方法, update是另外一个方法,update有没有事务?
乐观锁和悲观锁,你在项目中的使用场景是什么?
说一下你对乐观锁的理解?
你的消息中间件,怎么保证顺序性?
面试心得:15分钟结束。等通知(没戏)
自我介绍一下;
mysql是做的集群吗,主从是怎么做的配置?从服务器几个线程去同步主库的?
联合索引a b c怎么生效,ac 或者 ab 生效吗?
你们jvm启动参数怎么设置的,大小怎么配置?
怎样让AB两个线程交替执行,他俩执行完再让C线程在这俩之后执行?
SpringCloud 服务注册与发现,底层是怎么实现的,用netty?
怎么定位服务器的问题,如果内存过大,怎么排查定位解决?
你们是用的自己的服务器,还是买的云服务?项目是怎么打包发布的?
发布到 linux 服务器上,有写过启动应用的脚本吗?
面试心得:20分钟完,问了现在薪资和期望,然后说等通知! 二面被我拒绝了,感觉距离太远,而且行业方向不对口
自我介绍;
公司业务模式介绍,做什么业务的,你做哪块的;
多线程的几种实现方式,线程数池的好处,线程池有哪些参数,你们用哪种策略,生产中也用拒绝策略吗?
什么是cas,cas会有什么问题,Java哪些类用了cas?基本包装类型有用到cas吗?
对观察者模式了解吗,项目中怎么用到的?
gc有哪些算法,垃圾收集器,cms有什么优点?
说一下cap理论,Zookeeper是满足cap哪几个点,eureka呢,nacos呢?
mysql索引失效场景?
内存溢出有哪些情况?堆内存溢出有哪些情况?
mybatis 预编译怎么实现的?
mybatis 怎么防止sql注入?
Redis 数据类型?
Redis rdb和aof的区别?
Redis 缓存穿透 击穿 雪崩?
Redis 分布式锁有哪几个参数?
Redis 分布式锁怎么进行锁续期?
Redis 实现分布式锁 和 Zookeeper实现分布式锁有什么区别?
Zookeeper 抢占分布式锁,如果5个线程去创建节点,如果第三个线程挂了,影响后面的线程吗?
Java 守护线程的作用?
spi 机制了解吗?
面试心得:聊了一个小时左右,答的也不是很好。然后过了初试,约了复试时间;公司地址: 北京市朝阳区华腾世纪总部公园E2座3A层(地铁四惠东站B口出,导航至华腾世纪总部公园南2门)
自我介绍;
cas自增 和 Synchronized 自增 谁快 ?
synchronized 和 ReentracLock 哪个快,为啥?
Spring 和 SpringBoot 的区别,是什么?
SpringBoot 用的是什么概念去实现的,他是用的什么思想去做的?
如果让你实现一个SpringBoot starter,你应该怎么做?
SpringCloud 用过哪些组件 ?
rabbitMQ 实现机制,了解吗,为什么这么快?
mysql innodb 索引失效场景
你项目里面的东西,哪些可以值得拿出来说一下?
NIO了解吗?
Jdk1.8默认JVM的参数
面试心得:让我等了20分钟才进来,面试问一堆我不会的东西,面试也就问了20分钟,没戏等通知。
自我介绍;
用过哪些集合,怎么理解;
Hashmap的底层实现,是线程完全吗,为什么?
ConcurrentHashMap怎么实现的?
对Volatile和Cas怎么理解,Synchronized呢?
MySQL的三种日志分别是什么,undolog怎么实现事务的?
MySQL innodb的数据结构,B+tree和B-tree的区别在哪里,数据是怎么存储的,数据页的概念是什么 ,页是连续的吗?B+tree的非叶子结点存的什么?
面试心得:20分钟完成,答的不好,说等通知没戏!
你做了这么多年开发了,项目里面有什么值得拿出来说一下的?比如复杂的业务或者复杂的技术问题?
分布式事务,什么场景用,为什么用,你用的hmily,那么用过seata吗,seata支持tcc模式吗,分布式事务会出现一些什么问题?
讲一下单例模式,为什么用double check的方式,为什么会用volitale;
看你简历写的,排查过线上问题排查,你是怎么排查定位的?
看你简历写的,修复过宕机问题,是怎么定位修复的?
除了单例模式,其他设计模式,你结合你的项目,怎么用的,为什么会考虑用到设计模式,带来什么好处,能讲讲吗?
分布式锁怎么用的,Redis用分布式锁会有什么问题?
你用分布式锁,都在哪些场景下用到的?
说下你对cas的理解,可能会有什么问题,除了AtomicReference还有什么方案能解决ABA问题?
Redis常用的数据类型,在哪些场景下用到Redis,有复杂一点的场景吗?
Redis怎么实现发布订阅的功能?
MySQL,有一个长事务挂起很久了,怎么去查看杀掉?
MySQL表的数据量达到一定规模,比如几百万条,如果insert比较慢,该怎么排查解决?是数据量的问题,还是其他问题?
SpringCloud nacos注册以后, 是通过怎么去调用服务的?
怎么去解决接口的幂等性问题,如果数据库里面没有唯一主键?
分布式锁实现业务幂等?
面试心得:
一个小时结束,聊了很多,对方语音听不太清,面试效率不是很高;
今天面试被PUA,说我能力不行;
工作这么多年了,很多深层次的东西不了解,给我提建议,让多总结多学习,给我说大数据量情况下,sql 优化、设计模式、分布式组件、大有可为,呵呵哒!
自我介绍,哪个学校,哪年毕业的,是不是统招本科?
为什么来北京,接下来怎么考虑职业规范、发展;
接下来怎么考虑职业发展,行业方向,主要做什么考虑;
在之前工作中,有没有感觉相处不愉快的事情,感觉公司有什么不合理的制度吗?
HR开始介绍自己的公司规模;
数字化工厂事业部,纯软件方向;
主要是做企业管理系统,二次定制开发;
问了薪资多少,是否能够提供流水,期望薪资多少;
社保公积金缴纳比例多少;
后续有需要,技术部门再找你沟通;
面试心得:浪费时间,估计就是hr忽悠我,不想面试了。
聊天式面试主要问我们公司是做什么业务的;
自我介绍,挑一个你认为你很成功的项目来说一下;
说一下你常用熟悉的集合,讲一下区别,hashMap不同的版本有什么区别;
Redis常用的数据结构有哪些,怎么用的?
看过mybatis源码吗,最近有在学什么新技术吗?
mysql数据量表大了,上千万了,怎么优化;
怎么优化查询sql语句;
Redis 如果是集群,有没有缓存丢失的情况,脑裂是什么;
Redis缓存击穿怎么避免,你是用布隆过滤器怎么解决的?
选择设计模式,是怎么考虑的?实际项目中怎么用到的?
面试心得:50分钟左右,面试的整个过程,不是很难,一面应该通过了,面试官问了期望薪资,我说期望年xxx,面试官说现在行情不好给不到这么多,问多久能到岗,同时约了下周三复试时间
自我介绍、系统业务逻辑介绍
为什么3月份到现在,还没上班?
然后介绍他们现在想做什么系统?
面试心得:这边他们只想做一个手机号匹配的,类似用户中心管理系统页面的功能,工资低,18~22k。系统也很简单,这次线上面试我的还是个用户中心的系统用户,都不是技术,还想约线下面试,浪费时间,已拒绝。
自我介绍,挑一个你最熟悉的项目说吧,然后用了哪些技术栈,你对哪块技术熟悉?
HashMap 初始容量大小是 16, 扩容加载因子 0.75。 如果容量到 12,肯定会扩容吗?
线程池拒绝以后,如果这个任务很重要,该用什么策略,接下来该怎么办,直接丢弃吗?
微服务你们怎么用的,用到哪些组件?
jvm参数怎么设置,怎么排查jvm的问题?
如果系统访问变慢,你怎么排查问题,链路追踪用过吗?
mysql 两个字段,id name socore ,怎么取score 前3的?如果第三个socre有重复的,怎么取score排名前3所有人的名字?
Redis怎么实现轮训,你用哪些数据结构可以实现,或者其他的你用什么算法实现?
mysql查询怎么优化?
nacos服务调用,怎么实现cp和ap,ap是默认的,那么cp模式呢?
nacos怎么实现的动态配置,底层原理怎么实现的?
gateway网关,你们后面配置的转发,分内部和外部系统吗?
feign用过吗?
k8s 容器 了解过吗?
nacos配置文件的格式有哪几种知道吗?.yml 或者 .properties
nacos动态服务注册怎么实现的;
rabbit mq 怎么保证不丢失?
rabbit mq 多个消费者A、多个生产者A;如果我A发送消息给消费者,需要告诉B停止处理消息,该怎么做?
mysql 行锁和间隙锁了解吗?
线上如果内存过大或者cpu占用多,你该怎么排查?
面试心得:很多细节不会,有点懵的感觉。面试了一个多小时,一边面试我一边告诉我答案,他们技术用的比较新,jdk 17 + SpringCloudalibaba,等通知!然后过了一会hr居然还约了时间二面;
你对g1收集器了解吗,他的好处知道吗?
回答:用分区弱化了分代的概念,强调garbage first,需要回收时才回收的优先原则,通过卡表维护记录回收了哪些内存块区域,可以通过 MaxGCPauseTime控制最大回收时间,提高系统响应时间,系统吞吐量;
又问,那他的MaxGCPauseMillis是怎么控制实现了解吗?
没答上;
你们用的什么jdk版本,你用的收集器是什么?这收集器会有哪些缺点,实际场景中都遇到什么样的gc问题,你们jvm参数是怎么配置的?
答:用的jdk1.8版本,收集器是CMS+parNew ,讲了一些堆栈参数配置,比如系统内存是6G,--Xmn 4g ,-Xmx 4g ,-Xss 512k 的设置, -Xmn 和-Xmx最好设置成一样大,避免内存动态扩展震荡,导致多发生一些不必要gc问题,用cms,会有内存碎片化问题,可以通过两个参数开启内存碎片化整理,多少次fullgc后整理一次碎片,gc中的Promotion Failed问题,Concurrent Mode Failure 问题会导致最后用Serial Old单线程回收;
还讲了代码编写不规范,比如查询整个表里面数据不分页直接放到List集合中,如果条数过多会导致内存溢出,FileInputStream 操作文件流使用后没有在 finally 中释放资源,导致内存泄露;update sql 语句,使用索引不规范导致锁表,其他update sql同样表的线程等待释放锁,整个请求链路都变慢,内存无法释放,导致内存溢出的问题;
追问:你们系统内存是6g,当时设置堆内存大小,比例是怎么考虑的?
没答上;
追问:如果你应用内存过大,或者cpu占用过多,你们是怎么排查的?
答:用top命令,shift +p/m,可以切换查看使用最大cpu或者内存的进程pid
juc包concurrenthashmap里面用过吗,1.8是怎么实现的,
回答:1.8升级了,锁的粒度更细,使用synchronized+cas,synchronized锁住哈希冲突的数组中头结点;
又问 cas 是用在哪里?你认为 Synchronized 锁住哈希冲突的头结点以后,就不需要 cas 操作了吗?
cas 是用在哪里没答上,然后我说synchronized锁住哈希冲突的头结点以后,应该不需要cas操作了,因为此时单线程操作安全了;
线程池中execute 和 submit方法有什么区别?
回答:一个是提交Runnable参数,一个是提交Callable对象参数,其中Callable有返回值;在execute方法中提交Runnable任务时,后台有RunnableAdapter,其实是把Runnable转换成Callable执行,这里用到了适配器模式,只不过execute方法的返回值为空;还有通过submit提交的方法,后续用Future.get阻塞获取执行结果,并且异常需要提交任务的线程自己处理;
又追问:submit方法提交的任务,如果发生异常需要调用者自己处理,这块后台是怎么实现的?
没答上!
Redis分布式锁,你们怎么用的,有哪几个参数需要设置?
回答:五个参数,key锁名称,requestID客户端id,NX(SET_IF_NOT_EXIST),PX(SET_WITH_EXPIRE_TIME),expireTime(超时时间),因为哪个客户端请求的就哪个释放,避免死锁,所以有这几个参数;
又问:你们生产用的什么样的分布式锁?
答:用的Redisson,因为用jedis实现分布式锁,很难解决锁续期的问题,在超时时间内如果A客户端没有执行完任务,锁被超时释放了, 次数B客户端就获取了锁,那么就会出现问题;
又问:如果你们用Redisson,在Master宕机以后,slave没有同步到分布式锁,这个问题用什么方案怎么解决?
没答上!
MySQL 字段 char 和 varchar 有什么区别?
回答:char 不可变,当字段长度确定固定后,用 char;varchar 可变的,字段长度不确定用varchar,会多一个字节存储长度
又追问:除了这个,还有其他区别吗?
没答上,此时我反问他:那请问你知道还有什么区别吗?
他回答:当你使用varchar时,如果用了modify column去把列修改成char,会产生内存碎片空间
你们mysql用了集群吗?
回答:没有,我们用的主从同步,master/slave,主库开启binlog,采用row行同步方式,主库一个线程去写入binlog里;从库一个线程从主库的binlog同步到本地的中继日志,然后再用一个线程从中继日志同步据到本地数据库数;(因为之前其他公司被问到过主从同步用了几个线程,当时回答只有一个线程,答错,后来百度搜了下明白了;也不敢说用过mysql集群,因为按照他的提问方式,如果说用了,感觉他会继续问涉及到备份、读写分离、数据一致性问题,怕回答不好露馅)
你刚才说到了 binlog,那么 redolog 了解过吗?
答:redolog 好像是用做数据恢复的(答错),面试官纠正,是用来做事务持久化用的;又问:那么为了保持事务和数据一致性,redolog 和 binlog 他俩是怎么做到同步的?没答上,这问题一点不会;
你们消息队列用的什么,Kafka 和 RocketMQ 用过吗。你用的RabbitMQ是吧,那讲讲怎么保持消息顺序性!
回答:RabbitMQ,生产者是通过交换机塞入quene中,你可以用direct exchange模式,指定routingkey绑定quene, 生产者往队列里面塞,消费者用单线程消费,消费完一个,给生产者ack确认机制以后,再继续消费下一条;又追问,如果消费者端用多线程消费,就没办法保证顺序性了吗?没答上!
RabbitMQ 怎么保证不重复消费?
回答:因为有时候由于网络故障,导致了消息重发的问题,队列中可能产生重复的消息;如果消息队列是一个类似 insert 数据库语句的操作,那么可以通过数据库唯一键来保持插入不可重复;如果不是 insert 语句操作,可以通过借助 Redis,消费者端接受到消息的时候,先往 Redis里面 set key,后续每次消费的时候,都先从 Redis key里面 get 一下,如果有这个 key 了,那么就不消费了;
Rabbitmq 死信队列,你们是怎么处理的?
回答:专门用一个消费者线程,去绑定死信队列 quene,消费死信队列的消息;
你们之前的系统,有用过微服务吗,SpringCloud这块?
回答:用户中心改造过,nacos用来做注册服务,gateway用来做登录权鉴,验证token的操作。
那你们用 SpringBoot 这块,starter 流程是怎么实现的,能讲讲吗?
答:通过@SpringBootApplication组合注解,run SpringApplication类启动的;@SpringBootApplication是组合注解,里面有@EnableAutoConfiguration和 @Configuration组合起来的,其中@EnableAutoConfiguration是开启自动配置,里面还有一个@Import注解 ,在AutoConfigurationImportSelector类里面会调用loadFactoryNames方法,加载你starter的jar下META-INF/Spring.factories这个配置,然后这个配置文件里面,配置了一些你这个starter需要用到的类,比如很多行 ..* = ... ,然后这些类都被当做组件加载到Spring容器中,直接提供给用户使用;
分布式事务有了解吗?
答:我知道 Seata 分布式组件,支持 xa 模式和 tcc 模式(答的不全,还支持 AT(默认)、Seaga 模式) 追问:那你们的系统,是分布式的,还是单体多机的模式 回答:用了单体多机模式;
我看你简历写了分表处理几千万黑名单数据这个,是用的分库分表吗?
答:只是分表没有分库,按照黑名单数据,里面身份证地区代码开头做区分,往对应不同的表前缀存就行了;
那你们的系统都没有用分布式的吧?分库分表这些也没用到?
回答:是的
你还有什么想问我的吗?
我问他:你们技术栈:他回答:我们主要用 SpringCloud 微服务这块,中间件 kafka Redis,MySQL 分库分表;
面试心得:问答环节一个小时,前面的问题,80% 还是基于你简历写的技术栈去询问沟通,有些回答上了,有些没回答上;最后问的这两个问题,感觉对方应该主要是分布式微服务这块技术栈,可能经历不太匹配。就我目前了解到的那点微服务的技术,也不敢说自己用过分布式,不然他应该会追问你服务怎么拆分的,分布式场景下的一致性问题等等这些!如果要投,有分布式微服务要求描述这块的岗位,感觉还是得再学一下,再融合到自己项目中去;这次面试,也是说等通知,应该没戏了!
自我介绍:挑一个你最熟悉的项目说吧,然后用了哪些技术栈,你对哪块技术熟悉?
你工作这么多年了,解决过哪些复杂的问题,系统设计上的问题,还是生产中处理过的问题,说一下?
RabbitMQ 死信队列了解吗,怎么处理的?
中间件用过哪些,Redis 怎么用的,说一下场景?
你生产处理过内存宕机的问题对吧,当时怎么分析解决的?
FullGC 的情况说一下,怎么排查解决的?
面试心得:二面应该是通过,问的不是很难,之前整理过的问题都答上了,整个过程20多分钟,约了下周HR三面
自我介绍;
微服务你用过哪些组件;
系统上的这些中间件环境你搭建过吗;
多久能到岗;
介绍了下他们是做音视频开发的,产品需要部署到客户现场,需要驻场部署。
面试心得:问了多久能到岗,是否接受驻场,可能双方没有意愿吧,我嘴上接受驻场,但是感觉还是有点不太想去,对面听出我的口气,最后也没给我offer;
说一下 cas 和 synchronized;
用过哪些锁你都说下;
介绍公司业务模式,系统业务流程描述,以及你用过哪些技术;
介绍一下你们的系统吧,支付这块是怎么实现的?
HashMap 扩容以后,数组下标会变吧,扩容以后,如果再去 get,获取数据的时候,这个哈希值变了吗?
说一下你知道 SpringCloud 组件,知道哪些都说出来?然后用过哪些?
你们微服务这块,怎么做的?具体的实例,是怎么部署的,多台吗,然后怎么做负载均衡的?
Redis 用过哪些数据结构?
消息队列用的啥?
mysql 分表处理几千万数据,怎么处理的?
面试心得:30 分钟挂。
面试地点:华腾世纪公园E2座3A层
本来是现场技术总监二面,领导开会让我等了 20 分钟,估计还得等;
所以 hrbp 先面了,先聊了一会儿,问到我毕业时间,是不是统招本科,空档期在干嘛,现在有 offer 吗,2011 年毕业,2013 年才参加工作,当时为啥。2013、2015 的时候离职原因是啥?
(我内心:现在不都2022年了吗,还问2013年离职原因) 问了现在薪资和期望薪资待遇的情况,我说期望多少,她说高了肯定给不到,现在行情也不好;给我介绍了他们公司的几条业务线,消费贷,汽车融资租赁,房抵贷渠道,然后还有自动货柜出售商品业务;公司有上万名员工;(当时我看他们这层楼人都不多,而且办公环境也不好,有点质疑心态)
hr 问我上家干了这么多年,有哪些成长;
我:说学了一些新技术,学会了金融业务。我大概讲了一下。她又问我怎么用新技术去解决问题的,我说你懂技术吗?她说懂,让我讲给她听;然后我开始讲生产中处理过的比如内存溢出、宕机,讲到一半说到细节,她听不懂了,被喊停。后来开始聊其他的,聊了几分钟;问我对项目做过哪些复盘,你的整理总结文档输出沉淀有哪些?有没有团队分享?我说我有记录总结博客,需要把博客地址发给你看下吗?hr还是把刚才的话题谈回来,问我解决过哪些问题,有哪些成长?然后我盯着她(内心:刚才不是给你讲了吗,你不是听不懂还问?), 她就反问我道:我说的不明白吗,问题描述不太清楚吗?(内心很无奈:现在hr也这么装吗,是显得在公司做bp有更高价值,都开始问候选人技术问题了?) 我继续跟她扯,打算敷衍一下;前面扯完了,说到薪资结构,14薪,会在offer里面体现;然后社保公积金基数,只按照8k缴纳;
技术总监来了,上来让我自我介绍,让我讲了下上家公司的业务模式、项目流程;
你解决过哪些问题?我然后就说了还是刚才内存宕机的问题。
追问:如果你感觉你的系统有内存溢出,但是不用 jmap 命令做 dump 也不用 JVisualVM,怎么去排查?我答不出来。
做过哪些优化,我说了 MySQL 查询,一个大表用 limit m ,n 优化的场景方案;
MySQL 是不是做的集群,怎么保证高可用;
然后给我介绍了他们的系统,说进来以后会干什么,感觉有点含糊,具体到哪个组做什么业务也没说,问用哪些技术栈也回答的很含糊,说什么新系统老系统都有
(内心:技术管理可能混乱,项目杂不规范)
面试心得:
对 hrbp 印象不好。盘查户口式的问,感觉都是一些官方套话,没啥实际意义。他又不能决定最终面试结果;
有可能会通过,有可能通不过,感觉过了也不想去,薪资不行,公积金也低,项目成长也不行。虽然现在一直没工作,行情也不好,找不到好的;但是也不想去。
你简单介绍下自己业务模式、工作经历,用过哪些技术栈;
你们 git 分支是怎样做的,上线是怎么操作的;
docker 容器用过吗,搭建过吗;
平时线上怎么排查日志的,直接通过docker还是?
用过哪些微服务组件;
RabbitMQ 有哪些场景可以用?怎么保证消息不重复消费?
MySQL 你们怎么优化的?
b 树和 b+ 树有什么区别
聚簇索引和非聚簇索引的区别
JVM 类加载,双亲委派为什么?
面试心得:20分钟结束,挂!但是等了两天又通知线上复试。
你先自我介绍自己?
你为什么离职?
你这些年,在上家公司干这么久,你的成长,在哪里?
你遇到过最大的困难是什么,怎么解决的?
你这几个月空档期,除了家里有事,还干了什么?
你期望薪资多少?要了 xxx。
你还有什么要问我的吗?
HR介绍自己公司待遇。Base*12 + 4 (16薪),全额五险一金 面试心得:20 分钟结束,等通知(后来询问得知面试挂),应该 是面试薪资要高了,一面的时候,面试官就说过这个问题,觉得技术要求达不到这个阶层吧,而且现在大环境不好,降薪的也很多。
简单自我介绍
挑一个你熟悉的技术栈,你认为你哪块熟悉或者擅长?
你们的系统有多少用户,有没有高并发场景,怎么解决的?
你有过哪些性能方案优化或者代码上的优化场景吗?
你们项目团队有多大?
问了期望薪资,我说现在多少,期望年 xxx 左右就行。他说到底是左还是右?我说当然右更好了
面试心得:20 分钟结束,等通知没戏了。破拉煤物流公司,还玩什么高并发,呵呵哒。
Java 异常体系;
多线程怎么用的;
过滤器和拦截器的区别和使用场景;
mysql undolog、redolog、binlog;
git 分支你们怎么管理的,git命令;
说一下Synchronized和Lock的区别;
MQSQL 索引怎么优化;
RabbitMQ 几种 exchange方式;
RabbitMQ 怎么做到消息不重复消费;
linux 替换文件的几种方式;
说下查看jvm参数;
JVM 命令启动参数;
docker 和 k8s 有了解过吗;
Redis 用了哪些数据结构,场景。BitMap 用过吗。
面试心得:50分钟。问了期望薪资,我说xx,估计对面嫌高了,又问能否接受加班,我说短期加班可以,长期996吃不消。
你们的请求报文是怎么样的,报文格式、长度?
https 证书怎么加密的, 证书怎么生成的;
SpringCloud 用过哪些组件;
feign 负载均衡;
分布式事务;
怎么线上排查问题;
mysql 悲观锁 乐观锁 怎么实现;
mysql 慢查询,优化方式;
如果系统宕机,你怎么分析,怎么去 dump 文件,解决;
SpringCloud 降级 限流 负载均衡这块怎么做的;
还问工作这么久了,带过团队没有。
面试心得:30分钟。找人内推的,等待通知;
放款对账出现过哪些问题,什么原因?怎么解决的?
计息方式有哪几种?等额本金和等额本息的区别;
jdk 1.7、1.8 区别;
io、nio、bio 区别;
Java 动态代理怎么实现的;
Spring bean 的作用域;
mybatis 和 Hibernate 区别;
前端xss攻击和csrf攻击 怎么预防;
有这样一个场景。比如用户还款日,最后一天,本来还钱了,然后由于系统原因,代扣接口失败了。然后第二天,给这个用户产生了罚息,这种情况应该怎么处理?
我需要生成一个分布式 id,要看到业务含义和自增数量。业务这边需要包含商户号,每个商户不一样,每天的日期需要包含在分布式 id 里面,而且每天有流水千万, 可能并发的时候高达几十万数量,怎么去设计这个分布式 id。
面试心得:50分钟,主要是业务问题答的不好。HR晚上通知挂。
你学校是什么?2013 年之前的项目经历是什么?你不写,怎么根据你的级别,给你定薪资呢?
讲讲你们以前的业务模式?放款的钱,怎么确保钱能打给学生,是用于培训的?
你从0到1 的那个系统,是怎么做起来的,那个系统,流程中哪些账户?
你认为你的优势在哪里,能给我们公司带来什么?
你的微服务是怎么拆分的?
你还有什么想问我的吗?
面试心得:面试聊了40分钟左右,说薪资只能跟之前持平,不能涨薪这样子。
自我介绍;
volatile 关键字起到什么作用;
MyBatis 平时怎么用的,有哪些好处,List参数怎么传的?
MySQL 优化案例;
你的摄像头,怎么有点暗呢?
你三月份离职到现在都没工作,你是不是有点任性啊?
面试心得:面试聊了 30 分钟左右,咨询内推人员,一面通过,等待银行内部员工进行二面复试。
请自我介绍(上来就是hr面,灵魂拷问开始)
你 2013 年离职原因是什么?
你觉得你遇到的最大困难是什么,是怎么解决的?
你之前在工作上经常感到有压力吗?
你如果在工作中,跟别人发生分歧,你该这么做?
如果产品或者用户提出来需求做不了,你该怎么办?
你跟领导曾经有没有过发生分歧不同,是否要坚持自己的方案?
如果有一个分工任务,你的同事不愿意配合完成,他什么都不想做,甚至就是不愿意工作,你应该怎么办?
如果分给你的开发任务,你完成了,别人的任务还没有完成,你应该怎么办?
你曾经帮助过别人吗,是否经常在小组里面帮助人?
你们的绩效是怎么打的,是否有过被扣绩效的情况,为什么?
你今天有一个需求需要上线,而同时生产出现了一个 bug 你该怎么做,哪个优先级高?
你做过需求分析这块吗?
如果你参与别人的会议,遇到一个自己觉得好的方案,是否会提出来让别人按照你的去做?
你觉得你最大的缺点是什么?
你在生活上或者工作上遇到过最大的挫折是什么?
你对加班怎么看?(然后介绍了他们公司的一些加班情况)
问完这些还不够,后面还发了一个链接,让做30分钟的性格测试,服!
下午17:00技术经理开始面试:
说一下 JVM 内存结构;
有没有用过 JNI;
音视频这块东西,做过吗,对音视频SDK了解吗?
内存溢出有哪些场景,怎么排查的,怎么解决?
你们日志是用的什么,怎么分级打印的?
代码测试这块用过吗,代码测试覆盖率怎么做的?
对 http,tcp/ip 熟悉吗,用过一些抓包工具分析没有?
UML类图画过吗?
我们的音视频服务,是用的开源的,如果让你学习一项新技术,你应该怎么做?
面试心得:搞笑 hr,灵魂拷问呢,工资低,加班也不少。
自我介绍;
volatile关键字用处和场景?
你拆分大文件,思路是什么,代码还是 linux 拆分,哪个效率高?
如果要多个文件合并成一个文件,怎么办,有什么方式提高效率?
你分表处理几千万黑名单数据,是怎么做的?
你用过分布式组件吗?分布式事务 Seata 的 AT 模式有什么问题?
你系统宕机,当时是怎么分析定位问题的?
linux 怎么会杀掉你的进程,你们系统内存多少,JVM 启动参数怎么设置的,为什么申请虚拟内存会超呢?
如果你的系统是集群的方式,那么定时任务这块,怎么保证一个应用跑?
另外一个业务面试官,就问了一个业务问题:我看你简历上写的账单、台账、还款单据,你能分别解释一下这三者的含义吗?
你三月份离职到现在都没工作,为什么?
面试心得:面试聊了30分钟左右,一面通过,说等待一周内会进行二面复试。
在没有同行业经验的情况下,面试官基本会死磕技术,因为讲业务他听不懂。所以建议技术人在 30 岁以后最好立足于一个行业,不然面试真心太难了。