首页 > 笔经面经 > 北京天润融通科技Java社招面经

北京天润融通科技Java社招面经

头像
YuJian-NCD
编辑于 2021-02-05 08:56:37 APP内打开
赞 10 | 收藏 75 | 回复11 | 浏览3952
更新——三面过-薪资没谈拢,继续找工作
Boss上投递的简历,北京天润融通科技股份有限公司,规模100-499人 boss给出的薪资:15-25K Java后台开发
面试时间:2020-1-27 14:00
面试形式:hr加微信,然后拉个群,到点儿视频,一面
开始正文
-------------
说实话,这个节点儿上,裸辞的我,在家大半年,嵌入式转行Java,心情你懂得
一开始,两个戴口罩的进来,一男一女。
果不其然,
女的先问:先介绍一下自己,
我:巴拉巴拉,介绍自己经历……感觉这女的是一个项目经理
女的再问:为什么离职啊,看你是7月底离职的,这段时间干啥了?
我:(心里想,果不其然),然后就各种解释了,处于职业规划和公司社保问题两个方向说了一下,空档期就说自己一直在学Java,提升自己的技术
女的对旁边那个技术说,我暂时没什么问题了,你问吧
男技术:看你简历有说到集合,那先谈谈集合吧。
我:从Collection、Map开始,然后说到List实现类ArrayList、LinkedList;Set:TreeSet、HashSet;Map:hashMap,TreeMap;主要又说了HashMap。这个很常见,就不贴答案了
男技术:嗯,你的项目业务上用的是MySQL,能说说MySQL调优吗?
我:这个我自己总结了一下答案如下:
  1. 数据选型:首先是数据选型方面进行优化,选取最适用的字段属性,数据的表越小,查询越快

  2. 范式应用:合理使用范式和反范式

  3. 存储引擎的选择:如果该数据库读操作较多,存储引擎选择MyISAM,如果是写操作多,选择innodb

  4. 主键选择:代理主键

  5. 执行计划explain:使用explain+sql测试sql语句执行情况,然后优化sql语句

    1. 注意的关键字:type关键字,通常达到range级别,最好是ref,而ref最好是一个常数。

  6. 索引优化:

    1. 尽量在主键上添加使用索引

    2. 利用覆盖索引、索引下推机制,注意组合索引的匹配原则,

    3. 尽量使用唯一索引,避免使用普通索引

  7. 查询优化:这个应该被包含在执行计划中,但是个人觉得还是拆出来,其实我们在写的时候就该注意sql的效率,explain执行计划只是验证

    1. 优化数据访问,避免查询中出现筛选大量数据,可以通过limit限制;

    2. 避免select * from table这种全表扫描的语句

    3. 如果业务没有特殊规定数据,那么就尽量避免使用UNION,可以考虑UNION-ALL替换,因为后者不会过滤重复数据,效率高于UNION

男技术:嗯,说得挺全,你说HashMap时,谈到了红黑树,那说说MySQL索引为什么用B+树呢,b树,红黑树呢?为什么不用
我:谈了一下B树与B+树的区别,从key说起,B+树节点不存储数据,只有叶子节点存储数据,B树的key既存储数据又存储key,导致key的减少,数据增多的时候,树的高度增加,IO次数变多,导致查询效率降低;红黑本身自旋,尽管它的自旋次数少于AVL树,但是数据增多,同样会降低插入删除效率,并且树的高度同样增加,所以不用这两个
男技术:嗯,看你项目中有用到redisredis支持的数据类型以及数据结构,以及你用过那个数据类型,说一下场景
我:这个可以百度到,至于场景自己想吧。然后可能问到底层的数据结构怎么实现,答不出来也没关系,我顺便把redis的穿透讲了一下,因为之前项目中用到。
结果这时候女的插了一句嘴:redis另外两个场景遇到过吗?
我:(心里……)redis击穿、和redis雪崩,然后说了一下如何解决
男技术:你前面说到了锁,那redis分布式锁实现怎么实现?
我:思路setnx,考虑死锁->设置锁过期时间-,然后考虑锁提前过期,任务未执行完毕->多线程监控
男技术:看你用过Spring MVC,说一下请求处理流程
我:
  1. 请求解析DipatcherServlet路径:客户端发出⼀个http请求给web服务器,web服务器对http请求进⾏解析,如果匹配DispatcherServlet的请求映射路径(在web.xml中指定),web容器将请求转交给DispatcherServlet.

  2. 匹配处理器Handler:DipatcherServlet接收到这个请求之后将根据请求的信息(包括URL、Http⽅法、请求报⽂头和请求参数Cookie等)以及HandlerMapping的配置找到处理请求的处理器(Handler)。

  3. 处理器进⾏处理:DispatcherServlet根据HandlerMapping找到对应的Handler,将处理权交给Handler(Handler将具体的处理进⾏封装),再由具体的HandlerAdapter对Handler进⾏具体的调⽤。

  4. 处理器返回逻辑视图ModelAndView对象给DispatcherServlet:Handler对数据处理完成以后将返回⼀个ModelAndView()对象给DispatcherServlet。

  5. Dispatcher通过ViewResolver将逻辑视图转化为正式视图view:Handler返回的ModelAndView()只是⼀个逻辑视图并不是⼀个正式的视图,DispatcherSevlet通过ViewResolver将逻辑视图转化为真正的视图View。

  6. Dispatcher通过model解析出ModelAndView()中的参数进⾏解析最终展现出完整的view并返回给客户端

男技术:什么是Restful,能讲一下吗?(我有点儿蒙xx)
我:不了解,因为我之前的项目都是基于cloud,所以没答出来
男技术:没关系,前端与后端通信可以调用接口,后端与后端之间rpc用过吗,就是服务之间的调用(没看rpc,所以pass)
我:没答出来
男技术:没关系,fegin了解吗,手写过源码吗?
我: (pass,没写过,说了一下fegin的作用)
男技术:最后问两个问题:你对自己的职业规划有什么打算吗?长短期都说一下
我:从近期和职和职业规划来说。
女的开始了:如果有任务完不成了,你会怎么处理
我:这个大家自行百度
女的:对于加班有什么看法
我:这个也百度去吧
女的:你还有什么想问的
我:问了一下技术框架,以及开发人员构成

第二天
二面:还是同样的形式
昨天hr小姐姐说会拉一个架构进来和我面试
整个人慌的一批,半夜复习到了一点多。因为之前没有面试JVM、线程、锁相关的问题以及MySQL事务的问题,结果没问。
面试官:说说你做的这个IoT消防平台项目吧,你主要负责那些功能
我:(前面感觉还正常)然后我从项目立项背景到具体功能模块和他讲了一下
这一面基本没问技术,问的都是一些“人情世故”
比如:(我清理手机的时候把录音给误删了,仰天常叹啊)
1. 你在这个项目中学到了那些?
2. 你对你们公司最认同的有哪些地方
3. 你希望你的下一任领导是个什么样的人
4. 如果满意度10分,你会给你的公司打多少分?(我没给满分,怕公司太骄傲,开玩笑哈哈)
5. 为什么会给这个分数
6. 你对新的公司有什么期望?
7. 你在工作中,和同事产生过分歧吗?怎么解决的?
8. 你对新工作的业务有什么样期许?
还有好多忘记了
最后就是你有什么想问我的?
我从技术提升、职业规划、以及公司现用的框架这几个方面问的。
当天下午三面:
问自身的情况:
空档期干了什么?
我:自己买课学习
是否是培训机构?
我:自学
怎么验证学习成果?
我:做课程中的项目,然后去刷刷题等等
你的期望薪资多少(不要问我要了多少)
基本这样,难度不大。

更多模拟面试

11条回帖

回帖
加载中...
话题 回帖

推荐话题

相关热帖

笔经面经近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐