自我介绍(面试官好像刚刚开始看我的简历)
问项目细节
- 介绍项目的功能,模块
- 项目是自己做的还是?
- 你们怎么分工的?
- 整个后端的模块化分析大概讲一下
- 系统如果上线的话,应该要录入一些初始数据。最开始要有数据的模块是商户模块吗?哪些模块要有初始数据大概说一说
- 讲到了商品、库存这两个项目中压根没有的字段。。。
- 商户跟库存是放在你说的哪个模块里面。因为我没有看到相关的模块描述
- 商户模块
- 也就是商户模块不仅要包含商户的基本信息,还要包括商户的商品。那为什么不把这一块拆分出来呢,为什么一定要放在商户里面呢,说一下你的原因
- 因为商户模块里面有已售的商品数,它跟库存有关系
- 已售的商品数为什么会跟库存产生关系呢
- 因为卖掉一个商品,库存就要减1
- 即使这样我也不明白为什么要放在商户模块里面
- 额。。。
- 就你能详细说一下商户这个模块是怎么设计的吗,大概说一下有哪些子模块,表格设计是怎么样的?这个是第一个要有数据的模块,那肯定是重点模块嘛对不对?
- 那商户的已售数量是不管卖什么类型的商品,只要卖一个就得加一个?那有多种商品就是多种商品销售量的总和?
- 那为什么这个经常变动的数据,这一列要跟那些不会经常变动的数据,比如商户的城市、类别、标题这些,设计在同一个表里面?
- 诶。。。其实是可以放在多张表里面的
- 那为什么当时要放在同一张表里面?你这个表除了这些还有什么别的列继续说一下。
- 还有吗?我先插一个问题,你说后端有两个人,那你主要负责哪几个模块?商户模块是你主要负责的吗?
- 第一张表我可以理解为商户的基本信息表。除了这张表之外还有什么表?
- 评论的星星总数、评论总次数(成功给自己挖坑)。目前商户表只有一张
- 你这张表,首先跟评论系统有关联吧,其次跟商品还有库存这些信息有什么关联,没看到?
- 。。。默认一个商户只卖一种商品
- 也就是说是一个demo,不是可以用的是吧
- 对。(我应该回答要用也是可以用的,只要去扩展,被自己蠢哭。。。)
- 那商户模块里面的评论总数跟评论模块做一个耦合,你们当初为什么要做这么一个耦合,有什么好处有什么坏处?大概说一下你的理解
- 开始瞎编。。
- 那会实时的去更新商户表里面的评论总数和评论星星总数吗?
1. 会
- 这种设计有什么问题?大概说一说
- 短时间内如果有大量用户来评论,可能会涉及到数据安全的问题(我直接反应过来就是数据安全,但是没想好)
- 有什么数据安全问题?
- emmm讲的不清楚
- 这应该不叫数据安全问题,而是事务冲突吧。那你是怎么解决这种冲突呢?
- 加锁
- 那你又说单位时间内有大量用户来评论。那你这里加锁会有什么问题啊
- 会降低使用效率。。
- 那你点出这样有一个问题,那为什么当初要这样设计呢?
- 当时是想先让它跑起来
- 那现在要你去优化,你的思路是什么呢?
- 我想想。。使用分段锁吧,concurrentHashMap(瞎说)
- 分段锁是什么东西?
- 那实际应用到你这个地方是怎么做的呢?因为我没怎么听懂加在这个地方要怎么用?
- 我讲的不够清楚嘛。。
- 现在问题是,balabala....
- 分段锁只是方案,应该有别的解决方法的,比如加一个事务
- 其实我们可以换一个思路。商户的评论数和评论星级数,需不需要去实时刷新吗?
- 似乎也并不需要。
- 那你认为可以怎么做呢?
- 我认为可以定时的去刷新,处理用户之前留下的评论。可以有一个定时模块
- 那如果有定时模块的话,那能不能不在商户模块这个评论数跟评论模块做一个耦合呢?可以吗?
- 可以考虑
- 这种设计有什么问题?大概说一说
- 评论模块是不是你做的?那你除了商户模块还做了什么模块
1. 广告模块,还有会员模块的一部分
- 那广告是怎么做的呢?
1. 没整理过思路,讲的有点乱
- 我还是觉得你讲的有点乱,还是说清楚广告模块具体是怎么落地的,是怎么样的东西,然后数据是存数据库的话,你的表是怎么设计的,怎么跟其他模块产生关联,至少要描述到,刚才我听懂你那个商户跟评论之间的关系那样。不然你这样说,我真的很难知道你这个广告模块是怎么样的。
1. 广告表的字段 2. 广告实体类、数据传输对象类...
- 数据传输对象,怎么解释这个东西?
- 然后呢?就这张表就没了吗?那广告怎么跟其他的模块交互起来。怎么用呢?
- 为什么设计广告的时候要跟评论数相关呢?
- 为什么广告要跟商户星级相关呢?
- 星级越高,权重越高。考虑放在广告靠前的位置
- 如果新商户星级不高,更需要广告。产品的逻辑设置的跟星级挂钩了,不是很合理呀。当时为什么要这样设计?
- 啊这。。。
- 你这个对新商户很不友好啊。老商户有一定的群众基础,不需要做广告。新商户才需要广告啊。
- 也不是说只考虑星级,也考虑商户加入的时间(好吧,这是编的。广告模块根本没有排序的功能,暂时还没实现),也考虑竞价排行。
- 那广告主要在哪里展示呢?
- 刚才说到图片,没怎么听懂。上传用一个数据传输对象,怎么跟广告实体对象进来操作广告的表。管理页面去上传广告对吧,会调用数据传输的对象,这块是一个写入的过程是嘛?
- 没讲清(dto的作用有点忘了。。)
- 也就是图片上传一次就不能变了是嘛?
- 可以改变的
- 那每次改变图片的过程是怎么样的呢?
- 项目就只做了点评App这样一个demo对吧
- 做了多久?
- 主要是用Java写的对吧?
- 本质就是一个PC端的一个应用的是吧
问计算机网络。被问到自闭
- 我看你本科专业是通信工程。跟计算机相关的课程有学过对吧。
- 我问一个计算机网络相关的问题吧?计算机网络经常会用到TCP和UDP这两个协议,说一下它们的区别
- TCP需要建立安全连接,UDP不需要;TCP需要建立会话,需要可靠传输,UDP不需要
- 所谓的可靠,安全怎么理解呢?
- 通过三次握手来建立可靠会话
- 数据传输的可靠性怎么保证的?
- 三次握手
- 三次握手只是建立了连接而已,建立完连接要进行数据传输。你要保证。。你先解释一下什么是数据的可靠性?
- 可到达
- 除了这一点之外呢
- 不会被截取到
- 这不是。。在说的问题。
- ......
- 你先说一下可到达是怎么做到的。机制?
- ....发送数据,分段,每段序号,发过去,对方接收到会返回确认号+1。
- 然后呢?这个序号有什么用呢?
- 已经发送到哪个数据包了
- 除了作为id,还有没有什么作用?
- ......
- 序号需要保序吗?
- 需要。如果收到不连续的序号,说明已经丢包,需要出错重传
- 你刚说到数据过大要分段,TCP的分段是怎么分的,一般会多长
- 最大长度65535个字节。。
- 这么大吗
- ......
- IP分片跟TCP分段有什么区别?
- ......
- 以太网有个最大传输单元,称为MTU,MTU一般会多大呢?
- ......这个好像可以设置的吧
- 不大记得了是吧。没关系。再问个问题,刚才说到TCP和UDP的区别,一个是连接性,一个是可靠性对吧。那我们得到结论:UDP是不可靠的协议。另一个问题是:IP协议是可靠的吗?
- 应该可靠吧
- 那你能说一下TCP/IP有哪几层吗
- TCP、UDP是属于哪一层的
- 传输层
- IP呢?
- 网络层
- TCP、UDP是属于哪一层的
- 那假如说网络层IP协议是可靠的话,那它的上一层的协议,传输层,为什么会出现不可靠的情况呢?还是说你原来那个答案是错的
- ....这方面没有去考虑过。。我想想。。。答案错了吧
- 那你修正一下答案,认为IP协议是不可靠的对吧
- 对
- 那下一个问题:有两个不可靠的协议,能不能去掉一个,单纯用IP协议就好了,不需要UDP协议。为什么一定要设计一个UDP协议?
- 分层的是有原因的。TCP可靠,但是代价就是需要三次握手四次挥手这样一个连接建立和释放的开销。而有时候我们不需要这么可靠的协议,比如QQ发一个信息,不需要建立这么可靠的传输也可以发到对方。所以UDP是有用处的,不能去掉
嗯....那今天差不多面试到这里就结束了(没有反问环节)
总结:
问项目,问的很细节,疯狂指出项目有哪些问题,然后问:既然有这些问题,你也指出来了,那你们当时为什么要这么设计....
感觉自己对项目准备的不够吧,项目还没有做完,(评论模块还没做,所以一问到,我就只能瞎编了)没有去梳理出一个清晰的逻辑来,它是怎么具体实现的,每张表有哪些字段,每个模块是怎样设计的,怎么发挥作用的,怎么跟其他模块是怎么发生联系的
然后就是计网,没想到他会问这么多计网的东西,我大多都忘了,然后被问到自闭了。。。最后也没有反问环节。。
害。晚上去看了一下官网,变灰了,三面已凉。是自己太菜了
全部评论
(4) 回帖