编程题
-
求正整数n以内的不含n的所有孪生素数个数。
-
编写程序用递归求n的阶乘。1!+2!+…+10!。
-
1~100共100个自然数,随机放入一个有98个元素的数组a[98]中,找出没有被放入的那两个数。
-
判断一个int型数字是否是2的整数次幂。
-
两个字符串
word1=“abcdefg”word2=“cde”
如何只对word1进行修改成为word2?
简答题
-
二叉树的前中后序遍历。
-
常见的web前后端性能优化方法。
-
常见的web服务器攻击方式有哪些?
-
http协议的请求方法?
-
从输入URL到整个网页加载完毕及显示在页面上的整个流程。
-
三种用例工厂模式。
-
有关时间复杂度。
-
三角形的每个顶点有一只蚂蚁,它们向任意方向行走,问不相撞的概率是多少。
OFFER大挑战选择题
第一套
- 哪一个传递参数有大小限制?
A get
B post - kafka 可以脱离 zookeeper 单独使用吗?
A 能
B 不能 - spring 事务实现方式有几种?
A 5
B 4
C 3
D 2 - 在 hibernate 中哪一个允许映射值为 null?
A Integer
B int - synchronized 和 ReentrantLock 哪一个必须手动获取释放锁?
A synchronized
B ReentrantLock
C 都可以
D 都不可以 - AIO 的作用是什么?
A 实现了异步非堵塞
B 想一想
C 静一静
D 啥也没用 - 使用什么关键字实现接口?
A implements
B extends
C public
D 啥也不用 - 哪一个不是 hibernate 工作的内容?
A 读取并解析配置文件
B 打开 Session
C 创建事务
D 渲染前端页面 - kafka 同时设置了 7 天和 10G 清除数据,到第五天的时候消息达到了 10G,这个时候 kafka 将如何处理?
A 清空数据
B 存储数据
C 交换数据
D 切换数据 - 常见的创建线程有几种方式?
A 1
B 3
C 无数种
D 你猜
第二套
- HashMap 和 Hashtable 哪一个是线程安全?
A HashMap
B Hashtable
C 都是
D 都不是 - ArrayList 和 LinkedList 哪一个是双向链表的数据结构实现?
A ArrayList
B LinkedList
C 都是
D 都不是 - mybatis 有几种执行器(Executor)?
A 6
B 4
C 3
D 2 - 两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
A 对
B 不对 - 哪一个不是 spring 的主要模块?
A spring core
B spring dao
C spring web
D GitChat - 下列哪一个是后进先出检索元素?
A 队列
B 栈 - 下列哪一个不是 final 在 Java 中的作用?
A 不能被继承
B 不能被重写
C 能被修改
D 不能被修改 - rabbitmq 有几种重要的组件?
A 6
B 2
C 1
D 0 - kafka 可以脱离 zookeeper 单独使用吗?
A 能
B 不能 - mysql 问题排查都有几种手段?
A 6
B 4
C 3
D 2
第三套
- 常见的创建线程有几种方式?
A 1
B 3
C 无数种
D 你猜 - spring 支持几种 bean 的作用域?
A 5
B 4
C 3
D 2 - mysql 的事务隔离在文件里的配置值有几种?
A 6
B 4
C 3
D 2 - rabbitmq 避免消息丢失有几种方法?
A 6
B 4
C 3
D 2 - 动态代理是什么?
A 运行时动态生成代理类
B 动态查询电话
C 动态注解对象
D 动态测试 - try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
A 会
B 不会 - redis String类型的 value 值最大可以存储多少 MB?
A 4086
B 512
C 128
D 52 - rabbitmq 有几种重要的组件?
A 6
B 2
C 1
D 0 - 和 volatile 哪一个不能保证原子性?
A synchronized
B volatile
C 都可以
D 都不可以 - mybatis 有几种执行器(Executor)?
A 6
B 4
C 3
D 2
知识点
1. Spring中Bean的五个作用域
当通过spring容器创建一个Bean实例时,不仅可以完成Bean实例的实例化,还可以为Bean指定特定的作用域。Spring支持如下5种作用域:
- singleton:单例模式,在整个Spring IoC容器中,使用singleton定义的Bean将只有一个实例
- prototype:原型模式,每次通过容器的getBean方法获取prototype定义的Bean时,都将产生一个新的Bean实例
- request:对于每次HTTP请求,使用request定义的Bean都将产生一个新实例,即每次HTTP请求将会产生不同的Bean实例。只有在Web应用中使用Spring时,该作用域才有效
- session:对于每次HTTP Session,使用session定义的Bean豆浆产生一个新实例。同样只有在Web应用中使用Spring时,该作用域才有效
- globalsession:每个全局的HTTP Session,使用session定义的Bean都将产生一个新实例。典型情况下,仅在使用portlet context的时候有效。同样只有在Web应用中使用Spring时,该作用域才有效
2. Mysql的事务隔离级别有几种
隔离性(Isolation)
如果没有隔离性会发生如下问题:
- 数据丢失:A事务撤销时,把已经提交的B事务的更新数据覆盖了。
- 脏读:脏读主要是读取到了其他事务的数据,而其他事务随后发生回滚。MySQL通过三级封锁协议的第二级解决了脏读,在一级的基础上,要求读取数据 A 时必须加 S 锁,读取完马上释放 S 锁。
- 不可重复读:不可重复读是读取到数据后,随后其他事务对数据发生了修改,无法再次读取。MySQL通过三级封锁协议的第三级解决了不可重复读。在二级的基础上,要求读取数据 A 时必须加 S 锁,直到事务结束了才能释放 S 锁。
- 幻读:幻读是读取到数据后,随后其他事务对数据发生了新增,无法再次读取。在InnoDB引擎Repeatable Read的隔离级别下,MySQL通过Next-Key Lock以及MVCC解决了幻读,事务中分为当前读以及快照读。
- 快照读(snapshot read) ——通过MVCC来避免幻读
- 简单的select操作(不包括 select … lock in share mode, select … for update)
- 当前读(current read) ——通过Next-Key Lock 来避免幻读 Next-Key Lock即间隙锁(Gap Lock)+行锁 (Record Lock);
3. RabbitMQ避免消息丢失的方法有几种?
RabbitMQ一般情况很少丢失,但是不能排除意外,为了保证系统高可用,我们必须作出更好完善措施,保证系统的稳定性。
- 消息持久化
- ACK确认机制
- 设置集群镜像模式
- 消息补偿机制