关注
这么快吗base哪里呀
查看原帖
点赞 1
相关推荐
09-19 18:28
门头沟学院 Java 点赞 评论 收藏
分享
点赞 评论 收藏
分享
09-24 16:42
中国科学技术大学 Java 一笑而过2222:一、线上一面(9.13)
1. 反射
- 答案:反射是Java语言特性,允许程序在运行时动态获取类信息及创建对象、调用方法和访问属性等。可通过 Class.forName("类的全限定名") 获取 Class 对象,再用其进行如 newInstance() 创建实例、 getDeclaredMethods() 获取方法等操作。
2. 常见的设计模式
- 答案:常见设计模式包括创建模式(单例、工厂、抽象工厂等)、结构模式(代理、装饰器、桥接等)和行为模式(观察者、策略、模板方法等)。例如单例模式保证一个类只有一个实例并提供全局访问点,可通过饿汉式或懒汉式实现。
3. 线程池
- 答案:线程池由管理器、工作队列、工厂和拒绝策略等组成。核心是预先创建线程放池中,有任务时从池取线程执行,若线程忙则任务放队列等待,线程完成任务回池。可避免频繁创建和销毁线程开销,提高性能和资源利用率。
4. 排序算法相关
- 答案:
- 冒泡排序:通过相邻元素比较交换,将最大(或最小)元素“冒泡”到一端。从第一个元素开始,比较相邻两个元素,顺序不对就交换,一轮后最大元素到最后位置,对剩下元素重复。
- 插入排序:将待排序元素插入已排序部分合适位置。从第二个元素开始,与前面已排序元素依次比较,比前面小就将前面元素后移,直到找到合适位置插入。
- 选择排序:在未排序数组中选最小(或最大)元素,与未排序部分第一个元素交换位置,一轮后最小元素到第一个位置,对剩下元素重复。
- 快速排序:选“枢轴”元素将数组分两部分,左边小于枢轴,右边大于枢轴,对两部分分别快速排序。选第一个元素为枢轴,从两端向中间移动,将小于枢轴元素移到左边,大于枢轴元素移到右边,两端相遇时枢轴位置确定,对两部分分别排序。
- 归并排序:将数组分成两部分,分别排序后合并成有序数组。将数组分成左右两部分,对两部分分别排序,用两个指针分别指向两部分第一个元素,比较大小,将较小元素放入新数组,移动指针,重复直到元素都放入新数组。
5. HashMap,ConcurrentHashMap相关
- 答案:
- HashMap插入过程:先计算键哈希值(通过 hashCode() 及扰动函数),根据哈希值确定桶位置。桶空则直接插入;桶不空且只有一个键值对且键相等则更新值;桶不空且是链表(或红黑树,链表长达到一定阈值且数组长达到64时转换)则遍历找键相等键值对更新值,否则插入末尾。
- ConcurrentHashMap插入过程:类似HashMap先算哈希值确定桶位置,采用分段锁机制,将哈希表分成若干段,每个段有自己的锁,插入时确定所属段,获取锁后插入,完成后释放锁。
- HashMap底层是数组+链表(或红黑树)结构,数组长为2的幂次方,链表长达到8且数组长达到64时转换为红黑树。
- ConcurrentHashMap底层是分段锁结构,由若干个段组成,每个段类似小型HashMap,底层也是数组+链表(或红黑树)结构。
6. ioc和aop
- 答案:
- ioc(控制反转):核心是将对象创建和管理控制权从程序转移到容器(如Spring容器)。传统程序自己创建和管理对象,ioc模式下由容器根据配置文件或注解等创建和管理。
- aop(面向切面编程):核心是将横切关注点(如日志记录、安全检查、事务管理等)从业务逻辑中分离出来,以独立切面形式处理。如应用中很多业务逻辑方法需日志记录,有aop可将日志记录作为切面,通过配置文件或注解实现对所有业务逻辑方法的日志记录。
7. redis线程模式及速度原因
- 答案:redis采用单线程模式(单线程处理核心业务逻辑,有辅助线程处理其他任务)。快的原因包括数据结构简单(使用字符串、列表、集合、哈希表等)、内存操作(主要在内存中,避免磁盘I/O延迟)、事件驱动(有事件发生才处理,避免不必要等待和资源浪费)。
8. 链表插入排序
- 答案:定义已排序链表头节点(初始为空)。遍历原始链表,若已排序链表为空,将当前节点作为头节点;否则从头节点开始比较,若当前节点值小于头节点值,插入头节点之前;否则继续找合适位置,直到找到节点值大于当前节点值,插入该节点之前。最后已排序链表是原始链表排序结果。
二、线下二面(9.20,合肥)
1. redis宕机怎么办
- 答案:首先故障诊断,查看日志文件了解原因(可能是内存不足、硬件故障、软件冲突等)。针对原因处理,如内存不足增加内存、优化策略;硬件故障更换设备;软件冲突解决冲突。恢复时考虑用备份数据恢复,无备份数据根据业务需求和实际情况采取不同方法,如重新创建部分数据。
2. 接口设计原则和安全性保证
- 答案:
- 接口设计原则:单一职责(一个接口负责一项功能)、可扩展性(便于添加新功能)、简单性(设计简单明了)、稳定性(保持稳定,避免频繁修改)。
- 保证安全性方法:身份验证(用户名和密码、数字证书等)、授权(根据身份给予不同授权,限制访问权限)、加密(对传输数据加密,防止窃取)、完整性检查(对传输数据完整性检查,防止篡改)。
3. 一个用户同时登录两台设备处理方法
- 答案:在服务器端设置用户登录状态表,记录登录状态和设备信息。当一个用户在一台设备上登录时更新表,记录登录设备信息和时间。当同一用户在另一台设备上登录时,检查表,发现已有登录则发送退出登录指令给已登录设备,同时更新表记录新登录设备信息和时间。
4. 数据库表的设计原则
- 答案:设计原则包括第一范式(表每行具唯一性,每列基本数据类型,不含其他列内容)、第二范式(满足第一范式且每列与主关键在于逻辑上有联系,不与主关键在于其他列上有联系)、第三范式(满足第二范式且每列与主关键在于逻辑上有联系,且不与其他列在逻辑上有联系,除非通过主关键在于间接联系)、节本原则(避免复杂表结构,保持简单明了)。还需考虑索引设计,合理设置索引提高查询效率。
5. qps和tps的区别
- 答案:qps(每秒查询数)指每秒能处理的查询请求数量,用于衡量系统查询处理能力;tps(每秒事务数)指每秒能处理的事务数量,一个事务是完整操作序列,可能包括多个查询操作,用于衡量系统事务处理能力。
6. 数据库索引失效场景及行锁升级情况
- 答案:
- 索引失效场景:索引列上进行四则运算;索引列使用错误的索引类型;索引列上的字符串使用未设定好的字符串格式。
- 行锁升级情况:未提及明确的升级条件,可参考一般数据库知识,如当锁冲突严重、需要对表进行整体操作等情况下可能升级为表锁。
点赞 评论 收藏
分享
牛客热帖
- 1... 大四,双非二本,求指教,目前有一个offer但是一个月工资只有600要不要去啊5003
- 2... 开奖了,A到了398,000!4604
- 3... 【发帖有奖】新活动来啦,发帖评公司,最高可得100元京东卡~4597
- 4... 西安荣耀嵌入式oc4591
- 5... 数字马力 offer 啦!4154
- 6... 好消息是早就oc了,坏消息是一直没开奖4140
- 7... 求职银行的宝子们,最新的银行笔试题已公开,免费刷!4004
- 8... 迷茫ing2720
- 9... tiktok后端开发日常实习面经后续(已OC)2717
- 10... 不想再秋招了。。。2368
正在热议
# 晒一晒我的offer #
9526404次浏览 103887人参与
# 数据人offer决赛圈怎么选 #
107804次浏览 1399人参与
# 签约/解约注意事项 #
304876次浏览 1901人参与
# 互联网没坑了,还能去哪里? #
1096645次浏览 12701人参与
# 你/你领导的口头禅是什么? #
3737次浏览 34人参与
# 我的实习求职记录 #
5948696次浏览 82768人参与
# AI了,我在打一种很新的工 #
19115次浏览 425人参与
# 机械制造面试点评 #
33145次浏览 269人参与
# 你的秋招第一场笔试是哪家 #
38827次浏览 535人参与
# 机械制造公司评价 #
81859次浏览 257人参与
# 那些拿到大厂offer的简历长啥样 #
107408次浏览 2060人参与
# 数据人的面试交流地 #
425691次浏览 7718人参与
# 大疆求职进展汇总 #
394816次浏览 2832人参与
# 许愿池 #
203358次浏览 2489人参与
# 简历被挂麻了,求建议 #
2425570次浏览 32680人参与
# 非技术er求职现状 #
20865次浏览 187人参与
# 如何拒绝/反向PUA #
45555次浏览 322人参与
# 互联网公司评价 #
284689次浏览 3289人参与
# 通信/硬件求职避坑tips #
22288次浏览 146人参与
# 入职第一天,你准备什么时候下班 #
20570次浏览 133人参与