面试刷题11-24

笔试

(1)选择

se基础、计算机网络,session初始化等

(2)问答

ORM是什么,ORM框架是干什么的

绘制springMVC实现流程

(3)手撕编程

单例模式

字符串字符频次统计与输出

冒泡排序

 

 

一面

mybatis $的应用场景

mybatis缓存有了解嘛

项目中redis是用来干什么的
缓存

说一说对微服务的理解

项目用到的注册中心

说一说对cookie与session机制的了解

session在多用户秒杀场景下发挥的作用

说一说事务的原理

了解http请求嘛,具体说说

get请求和post请求

简述Spring IOC与Spring AOP理念
依赖反转和面向切面编程

SpringMVC用到了哪些设计模式

autowird注入,其他有了解嘛

依赖注入

手写SQL,学生成绩表,成绩10到15名mysql写法

 


 

  • 自我介绍,HR面----------------略
  • 直接聊项目,你们公司对分库分表,避免热点是怎么处理的?----------这涉及到数据库瓶颈问题的解决,所以要结合项目,对数据进行垂直和水平拆分。水平分库:(可以手动画个草图来阐述)当用户通过userId来请求数据,通过对userId的分析得出该去哪个数据库进行操作(比如:A数据库是偶数userId,B数据库是奇数userId。不仅仅是通过userId也有按照其他分库的方式,每个库的结构一样,但数据不一样)。水平分表:做法和分库是一样的。垂直分库:依照业务的不同,拆分成多个数据库(用户数据库和产品数据库……各管各的),垂直分表就是依照uid为核心,将字段分割(比如表一存放个人身份信息姓名年龄……,表二存放个人社交信息联系方式地址……)
  • 除了分库分表,你还了解些MySQL什么优化?--------------SQL语句上的优化……
  • 谈谈对BigDecimal的理解?------------主要是在涉及到金融交易项目中浮点运算丢失精度的问题,通过对构造器的参数为String类型进行算术运算相关API的调用。通过API提供的对象方法进行传统的加减乘除算术运算……
  • Spring的IOC和DI、AOP?-------------------IOC直译过来就是控制反转,将创建对象的操作交给Spring框架……,DI利用Spring注入属性值……,AOP切面……。
  • SpringMVC的执行流程?------也是画图的策略,从请求----拦截器-----适配器----业务逻辑转发----视图渲染-----返回……来说明。
  • MyBatis中#{}和${}的区别?--------#{}属于预编译处理会将sql中的#{}替换为?,调用PreparedStatement的set方法进行赋值,${}属于字符串替换,配置数据源中用过……
  • Mybatis的缓存?-----------------一级缓存……,二级缓存……
  • 谈谈你所了解的IO模型?-----------------最好是画个草图来阐述。阻塞式IO:当用户进程对服务请求时,服务器在返回数据的过程中,用户线程阻塞在调用处,直到数据返回才继续执行。非阻塞式IO:当用户请求数据时会立即得到一个回复,即使数据报还没准备好,不会阻塞用户线程的其他执行操作。异步IO:用户发出请求后会立即得到一个请求,不阻塞用户的其他执行,当数据准备好后会通知用户。
  • 你是如何理解同步/异步,并发/并行的概念的?-----------同步就是调用者必须等到方法调用返回后,才能继续后续的行为,异步调用会立即返回,调用者可以继续后续的操作,因为真正的执行不会影响阻塞调用者。并发,多个任务交替执行,但每次只有一个任务在执行。并行是真正的同时执行……
  • 如何理解锁的概念,列举出几个锁来说明它?-------------手写伪代码来说明……
  • 两个有序数组,数组中包括一些重复元素,合并成一个有序数组,并且去重,如何通过代码实现?-------个人的思路是先合并,然后通过集合的原理去重……具体手写伪代码即可。
  • 你有什么要问的吗?---------我问了线上环境的部署情况,面试官一脸蒙。。。。。。后来又具体地表达了想知道他们公司的项目针对群体(后台管理和前端普通用户)需要考虑哪些问题,面试官还是说不出个所以然来。。。。。。。不好意思再问面试官了。
  • 总结:以项目为基本支撑的一些数据库、锁,还有些项目常用的框架为主要考察内容。

 

社招对SSM框架,数据库分库分表问的比较深入

 


 

字节跳动

 

  • zset 延时队列怎么实现的
  • redis 数据结构有哪些?分别怎么实现的?
  • binlog 日志和 redolog 日志清楚吗? 说了两个日志的作用以及两阶段提交
  • C++ 的动态多态怎么实现的?
  • C++ 的构造函数可以是虚函数吗?
  • 让你设计一个限流的系统怎么做? 令牌桶
  • 让你设计一个延时任务系统怎么做 说了两个方案,一个是使用 redis 的 ZSET 来实现,考虑分片来抗高并发,使用 redis 的持久化来实现落地,使用 redis 的哨兵实现故障转移。 一个是使用时间轮的方法。

Shopee

  • innodb 与myisam 的区别?
  • mysql 的索引模型
  • redis 持久化有哪几种方式,怎么选?
  • redis 主从同步是怎样的过程?
  • Kafka 选主怎么做的?
  • mysql 有那些存储引擎,有哪些区别
  • mysql 索引在什么情况下会失效
  • mysql 主从同步怎么搞的?分哪几个过程?如果有一台新机器要加到从机里,怎么个过程。
  • 乐观锁与悲观锁的区别?
  • binlog 日志是 master 推的还是 salve 来拉的?

腾讯

  • 问项目
  • 服务发现是怎么实现的
  • 熔断是怎么实现的
  • id生成器怎么实现的,如何实现全局递增
  • redis如何实现高可用
  • 负载均衡算法有哪些
  • 协程和线程的区别
  • 进程间通讯方法
  • 背包问题
  • 贝叶斯的概率学原理

 

感谢楼主的分享,感觉有些难度,19级来强答一波(闲得慌)

  • zset 实现延时队列可以以时间戳作为score存入zset,zrange --withscore 取出判断是否到了执行时间,到了则执行然后删除
  • string、list、set、zset、hash这五种基本数据结构,string底层是数组,list底层是链表,hash和set的底层应该都是hashmap,zset应该是跳跃表(但是跳跃表具体的结构已经忘了)
  • 只清楚binlog记录了改变数据的ddl和dml语句,可以用来数据恢复和主从同步,redolog不清楚
  • c++ 不会
  • c++ 不会
  • 令牌桶
  • 简单的延时队列zset可以满足要求,时间轮算法不了解,复杂的话应该要上rabbitMQ这种专业的队列解决
  • innodb 和 myisam 最大的区别是前者支持事务而后者不支持,然后innodb是行锁(只有用到索引情况下是行锁,否则表锁),myisam是表锁,其它还有些差别忘了,现在常用的是innodb
  • 索引模型?是说索引的底层数据结构吗,如果是的话有两种,一种是B+tree,一种是hash
  • 两种,一种是append only file(aof),一种是快照,前者会随着时间的推移持久化文件会越来越大,持久化时间也会越来越长(虽然提供了持久化日志优化重写配置),而后者相对前者所需时间少,但比前者丢数据的概率要大,redis4.0还是5.0提供两种方式混用的配置
  • sync信号然后执行快照命令啥的,记不起了
  • 不知道
  • 常用的innodb,myisam,memory,innodb和myisam上面说过了,memory数据在内存中,查询速度最快,但是数据安全性和数据量级支撑要小一些
  • 这个情况就比较多了,一般都喜欢问数据索引的最左原则,like如果以%开头也会失效,字符串类型要用引号引起来等等
  • 不知道
  • 悲观锁是直接把数据锁起来直至改进程完成操作(for update),乐观锁是自己维护一个版本号来完成,乐观锁适合读多写少的场景
  • 不太清楚,应该是master推?
  • 服务发现是怎么实现的?是指基于dns的服务发现还是基于etcd、consul的注册中心吗
  • 不知道
  • redis集群?
  • 轮询、随机、加权轮询
  • 协程相对线程更加轻量级,也被称为用户态线程,例如go创建一个协程只需要2kb内存
  • 信号、管道、共享内存

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值