(2)投简历,我用的是Boss直聘,大家也可以用智联招聘、脉脉内推等
前面我都是按部就班的准备,后面B站一面过了准备二面的时候,我特意告诉HR我要准备一个星期后再二面,这一个星期我的节奏是,早上起来在地铁上找一篇系统的知识点视频看。
比如redis,到公司后正常上班,下班后地铁里也是看视频,到家后看面试视频,并把不会的知识点列出来,我这主要看的是抖音里敖丙面试清华的那个视频,我看了3-4遍,第一遍简单的过了一下,第二遍我在遇到不会的知识点的时候记录下来,后面查资料,因为有些答案视频没有,而且我不确定面试者答的是否准确,是否完整,第三遍我主要是学习下清华面试者的风格,他给我的感觉就是自信,他回答任何问题都是波澜不惊,即使不会的问题他说不会你也不觉得反感,学学他的逻辑性,语速。
第四遍我带着我媳妇一起听,我会把这些问题用自己的回答告诉我媳妇,甚至做一些补充,她是做前端的,我会举例子,如果把她教明白了,我觉得我自己掌握的应该是ok的;晚上睡觉前我也会看听视频直到睡着,加深印象;没有压力就没有动力,如果不是准备B站的面试,我可能做不到这么努力认真的学习吧。
平时的学习积累也很重要,平时也不要懈怠哦。
很多知识点大家最好去是理解这记,当然能和生活的一些经历做出类比那能更好的帮助你理解;
举个例子;线程池的知识点类比成去海底捞吃饭
整个海底捞就是一个线程池
海底捞里面一共有50个座位——50个核心线程
外面等待区——队列
外面等待区有20座位——70个最大线程数
这样应该就能很好理解线程池和里面一些参数的作用了吧。
1、设计模式:单例、工厂等,最好能手写单例
2、Redis、Mongdb、Mysql;结构、用户,索引,sql优化、数据如何持久化、备份等
3、RabbitMQ队列,模式,用法
4、线程、进程、线程池
6、GC,垃圾回收机制的几种算法
7、二叉树、平衡二叉树、B树、B+树、红黑树
8、多线程、并发,锁,锁升级过程
9、事务、隔离级别等
上周午休我刷手机的时候看到26群在那疯狂刷恭喜,我以为发生了什么,原来是晨曦进了B站,我也刷了一句恭喜,然后就跟他私聊了。
他我印象还是比较深的,因为他给了很多我视频的建议(虽然很久没录制面试视频了),然后是比较用心那种。
他之前一直比较满足的,结果发现朋友一毕业就20+,然后跳槽直接30+了,他就傻了,大厂非大厂差距那么大,他之前还觉得自己算比较多的,所以我也知道他为了换一家公司准备了很久。
1、自我介绍(工作情况、项目概况、用哪些技术、自己负责什么、擅长什么、优势是什么)
2、介绍下你做的项目及你在工作中的定位
3、离职的原因
答:1、目前工作5年了,技术上也遇到了瓶颈,目前的公司做的事情大部分都是重复的增删改查,希望换个环境,拓宽下技术和视野,也希望学习更多,更新的技术
2、目前在职级上虽然晋升了,但是在上很难晋升,因为公司的领导都是6、7年的老员工,我自己也希望做管理开发岗
基于以上两个原因,想换一个平台。
4、未来的规划是什么
5、结婚没、住哪,现在的公司在哪
答:已结婚,定居上海,现公司在上海北外滩。
1、设计表结构的时候要考虑哪些问题
答:我们目前用的数据库是MongoDB
(2)其次需要考虑表的可维护性及可读性,例如主表里有奖品信息的字段,如果奖品有多种类型呢,甚至对应多个奖品的情况,我这边选择独立一张表出来通过字段关联存放奖品信息而不选择放在主表字段里
2、关系型数据库和非关系型数据库有什么区别,你们现在用的是哪个数据库,为什么
答:关系型数据库包括SqlServe、MySql、Oracle;非关系型数据库有MongoDB、Redis
(1)nosql的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而数据库则只支持基础类型
(2)nosql数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询速度远不及nosql数据库
(3)关系型数据库可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询
(4)关系型数据库支持事务,安全性高
我们存储的会员数据量比较大,且每个月都产品过亿的订单及日志数据,所以选择非关系型数据库MongoDB
(1)尽量避免select*,需要哪些字段就查询哪些字段
(2)一些公用的数据可以先拿到内存里,后面要用直接拿,而不是每次用到的时候重新去数据库取,主要是减少数据库交互,提供性能
4、说说索引(聚集索引、非聚集索引,联合索引、最左匹配原则、非聚集索引要回表查询)
答:索引分为聚集索引和非聚集索引,用非聚集索引查询一般需要再次回表查询,因为非聚集索引存储的是主键ID,聚集索引查询就好似书的目录,用索引可以快速定位某一块区域数据,如果不用索引就需要全表扫描;还有多个字段组成联合索引,一般要符合最左匹配原则;
inor关键字就不走索引,like模糊匹配,前通配不走索引,后通配走索引
5、如果用非聚集索引怎样可以不用回表呢(selectidfromawherename="111")
答:如果只查询ID,用非聚集索引就不用回表,因为非聚集索引上就存的是ID
6、为什么使用索引后查询效率高呢
答:这个就涉及到索引和数据的结构了,类比书籍的目录页,索引通过B+树的结构存放数据,横向数据越多,纵向的高低越低,和磁盘的交互就越少,查询得速度就越快
7、有用过redis吗,你项目中使用场景是什么?说说你对redis的理解
答:我们项目中用到的redis场景不多,一般用于存储计算的数据,我们有些通过BI统计计算的数据,每次计算耗时比较长,这些数据可以存放到redis中,设置一天有效期;后面访问的时候就比较快了
redis的类型有string类型,hsah,可以用于购物车的场景,List,朋友圈展示,set,共同好友,zset排名;
redis因为数据都在内容中所以查询起来非常快,但是它会通过RDB和AOF持久化数据到磁盘里去
AOF文件是一个只进行追加操作的日志文件
9、你有什么想问的吗(问了开发语言、项目概况)
答:1、我想了解下咱们的项目大概是做什么的(内部的一些库存盘点等系统)
1、介绍下你现在的研发团队的情况(产品、运维、前端开发、后端开发、测试)
答:8个左右产品,3个运维,1个DB,10个前端,25个左右后端,10个左右测试
2、现在这家公司做什么业务?你负责哪些项目?
答:做的是线上商场的系统,用户端主要是H5和小程序,会给商场提供一些功能,包括商户的活动,优惠,团购等;提供发优惠券、问卷、一些游戏等功能;我主要负责的项目有后台商场商户的维护二次开发、内容管理、插件整合后台售卖,游戏的后台,对外的开放平台接口等;、
3、说说你从0到1的一个项目,你在项目中承担什么角色
(1)根据产品提出的需求及UE设计项目的表结构
(2)根据需求细分任务到具体责任人,整体把控项目的周期(1个半月左右)
(3)基础控件数据的提供;核心业务逻辑的开发,vue页面、java接口的demo页开发
(4)跨部门协调以及项目的部署
4、如果让你重新做一次你举得可以改进的项目,你觉得有哪些点可以优化的
答:我的一个客户经理项目需要跨表查询,当时领导提供的方案是在MongoDB上建视图,MongoDB4.6及以上版本才支持视图,且查询效率慢,如果重新做我觉得可以换成Mysql关系型数据库,因为可以多表关联查询
前端用框架,这个项目的前端用的html+原生js,这里的动态查询写了几百行的DOM元素操作,费时费力。
5、一个数组如果让你找到最大数,你会怎么弄?
6、如果我们现在要做一个库存盘点的系统,你怎么设计表结构,设计哪些表
答:库存表包含的字段有物品的类别,名称、编号、初始数量、剩余数量等信息;
还有一些分配记录表,日志表,记录分配和修改的信息,方便后面做库存盘点统计用
8、你有什么想问的吗(问了团队的人员情况)
答:咱们目前的团队有多少,还准备招几人呢;咱们的内部项目已经启动了吗
1、说说你们公司的人员结构和你的位置及承担的角色
答:见3面1
2、项目中遇到的难点,如何解决,以后怎么避免
后续想要避免这样的问题,我们得把现在稳定运行的驱动打成自己的Nuget包,并将此次问题上传公共文档(wiki),后续有其他部门同事也需要使用MongDB驱动的时候可以用我们内部打的驱动避免不可预知的意外,同时,我们测试环境的生产环境尽量保持一致,避免某些问题上线后才能发现
3、在项目中如何对接(对接前端,第三方,其他后端应用)
答:(1)大部分项目已经做了前后端分离,我们作为后端开发写完接口提供swagger文档给前端开发,里面有具体的接口地址,入参,出参,其他不清楚的地方在单独沟通下
(2)对接第三方我们提供对外统一的文档地址,里面提供了接口地址、加密方式demo、客户端dll、调用示例(java.net、python等),入参,出参等
(3)对内调用其他后台接口,一般对方提供Nuget客户,客户端里有入参,返回值,如果没有客户端需要自己这边根据对方提供的入参,返回值调用接口
4、平时怎么跟同事沟通交流
答:我觉得工作中,除了责任心,工作能力之外最重要的就是沟通能力,这取决于人的性格、更取决于沟通的技巧
(1)不要抱着有事我找你,没事我都不认识你的态度去交流,平时需求对接正常沟通交流,人家有事找你,即使不是你负责的在不耽误其他事的情况下帮忙解答一下,早上上班的见面了打个招呼,吃饭的时候聊聊天,或者经常跟自己组的人或者关系比较好的人一起吃饭聊天,遇到不熟的也可以聊聊,这样你后面沟通的时候很轻松,而且作为程序员人脉也很重要,以后不在一个公司了,技术问题可以相互交流,后面想跳槽也可以相互内推
5、以后的规划
答:我想1-2年内在掌握现有业务技术的前提下学习更多更新的技术;后面有机会的话也是希望做开发管理岗位;俗话说不想当将军的小兵不是好小兵,后面如果有机会也会去独立带团队。
6、离职的原因
答:(1)目前用的技术并不新,且在公司呆了3年左右,现在大部分都是业务代码,重复的增删改成,现在想去换个环境接触下不同的技术及业务,学习更多的东西
(2)目前的同事在公司的年限比较久,稳定性也比较高,目前我想做开发管理岗在现公司的几率也不大,也希望在新公司掌握现有业务后如果有机会也是向上升吧;
7、现在的薪资多少
答:N*14
8、你有什么想问的
答:咱们的主要开发语言是java吗,因为我是做.net的,中间有过度学习期吗
1、说说你最值得说的项目,场景是什么,周期多久
答:我做的勋章项目吧,会员消费一定金额后会点亮一些勋章,并且在勋章墙里可以看到一些勋章的点亮进度,比如我今天购物结束准备回去了,看到我的勋章墙里有一个勋章显示990/1000,再消费10元就能获得这个勋章了,那我再买个10块钱东西吧,可以促进会员消费;
这个项目的背景是销售已经做了ppt把这个项目卖出去了好几家,已经跟公司签了合同了,所以需要我们紧急开发,周期在一个半月左右,我是项目负责人
2、后面的规划是什么
答:见四面5
3、你和那些晋升特别快的人比起来有哪些不同(学习能力的不同,但是勤能补拙)
答:我觉得咱们大部分人的智商、学习能力都差不多,但是总有那些厉害的人,学历高,学习快,能力强,晋升快,我和他们比起来肯定有差距,但是我觉得这些固然是你的资本,但是我们学历能力也还可以,加上我们肯学,我们在某个方向或者某块技术也能成为天花板的存在,最近流行一个字词"躺平",我不赞同,我觉得现在的人,尤其是我们程序员,即使不能成为某个技术某个时代的引领者,也要成为这些最新技术的学习者,跟上时代的脚步,不停的学习,这样才能提高你的价值。
4、期望薪资是多少?近一年的工资流水发我下
答:期望薪资28K
最终历时一个多月2021.6.28我拿到了B站的offer;
虽然卡我薪资了,没达到我预期,但是也可以接受吧,因为我去年年底晋升加薪了,说我才涨薪半年,原来是14薪,现在是15,总包涨幅30%左右,试用期6个月,每天15餐补,8点半以后有加班餐