第一弹的地址在这里:
直接说第二弹的题目,
这些题目都是环环相扣,由浅入深的(您看到很浅的题目,千万别笑,继续往下看)
第一排:
第一题:设计一个多对多关系的表结构,比方说一个老师有多个学生、一个学生有多个老师,一般需要几张表?
第二题:在这三张表中有一张表是关系表,关系表中需要什么字段?
第三题:假设老师表中有两个老师,其中一个老师有三个学生,另一个老师没有学生,我要查出“所有老师和这些老师的学生”,怎么写这条SQL语句,会得到几行结果记录?
第四题:你用了两个left join对吧?一般情况下调整表名前后顺序,都可以把right join换成left join,但在一些特殊场景下,你不用right join就解决不了问题或者说很难解决问题,你能不能给我说一个这样的场景?
(最后一题是烧脑的题目)
第二排:
第一题:假设我要做一个和菜单相关的业务,这个菜单是无限分级的,一级菜单、二级菜单、三级菜单....有无限个层级;而且每个层级都可能有很多个菜单,我要把这些菜单数据存储到数据库中,“最少”需要几张表?
第二题:假设业务上只需要菜单的名字,那么你这张表里“最少”有一个字段,都是什么?
第三题:我需要你设计一个方法,这个方法的传入参数是一个菜单的ID,输出参数是这个菜单的层级,你怎么做?
第四题:如果我业务上要频繁的获取菜单的层级信息,那么你会怎么对这个设计进行构调优?
第五题:好的,现在已经为你加了一个“菜单层级”的字段,假设我这个“菜单树”只有一个顶级节点,我现在需要从这棵树中随机抽取一个节点,把这个节点调整成顶级节点,把原来的顶级节点调整成这个节点的子节点,你打算怎么做
(最后一题是烧脑的题目,要注意,整棵树所有的节点的层级都会变化)
第三排:
第一题:你在开发过程中有用过多线程吗?是在什么业务场景下用的?
第二题:你既然用过多线程,那么你用过线程锁吗?你能不能给我说一个业务场景,在这个业务场景下必须用线程锁,如果不用线程锁就可能会出问题?
第三题:假设有一项任务,需要你开很多个线程去并行执行这项任务;centos_x64系统,8核8G内存,任务是计算密集型的任务,你觉得你最多开到多少个线程就需要申请加服务器了?
第四题:假设给了你10台服务器,让你并行处理这项任务,现在需要让你设计这个分布式系统,你把技术关注点列给我看看好吗?
(最后一题是烧脑的题目,描述的很含糊,要让面试者自己提问,从提问中看面试者的技能水平)
要下班了,就写这三排,以后在写其他的!
喜欢请点推荐!