背景:
从去年开始,学校不是目标院校,去年9月份投了云计算,面试通过,后面没hc了,就没能进去(投递的部门的HR)。
今年2月裁员,就又投一次(重新投递的栗栗 lfyslp ),这次是数字能源,4-19收到offer,确定了4-27入职。
没工作两月,自我焦虑挺折磨人的,当前环境也确实找工作不容易。
1、改查选择 ArrayList,因为数组能够随机访问,效率高
2、如果有先进先出特点的,就用queue
3、如果数据是一对一对的,可以考虑map
4、如果要求数据不重复,可以用set
1、1.7的就会出现扩容死链,链表next指针死循环
2、1.7和1.8都容易出现数据错乱、丢失数据
3、可以使用线程安全的集合,例如hashtable、concurrenthashmap、stack
继承Thread类,实现Runnable接口,实现Callable接口
比较: 实现Runnable 接口比继承Thread 类的方式更好,避免由于Java单继承带来的局限性
使用场景:后台任务;异步处理;分布式计算
公平锁、非公平锁、可重入锁、独享锁、共享锁、互斥锁、乐观锁、悲观锁
避免死锁:
1、加锁顺序(线程按照一定的顺序加锁)
2、加锁时限(线程尝试获取锁的时候加上一定的时限,超过时限则放弃对该锁的请求,并释放自己占有的锁)
3、死锁检测
生产环境有相关监控,监控cpu、内存等信息,当过高时就会发送告警邮件
比如内存使用过高导致cpu满载
1、通过top命令查看负载高的cpu进程
2、进一步查找负载高的进程中的线程
3、然后导出内存日志,分析堆栈情况
内容:给定一组名字字符串,名字和名字之间逗号隔开, 按照票数高低的顺序输出名字空格票数,相同票数的按照字母升序输出 输入:xiaoming,xiaozhang,xiaoli,zhangsan,xiaoming 输出:xiaoming 2,xiaoli 1, xiaozhang 1,zhangsan
构建一个实体类数组(没构建成功,经过面试官提示,加一个判断完成),然后自定义排序,结果通过
给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 示例 1: 输入:target = 7, nums = [2,3,1,2,4,3] 输出:2 解释:子数组 [4,3] 是该条件下的长度最小的子数组。 示例 2: 输入:target = 4, nums = [1,4,4] 输出:1 示例 3: 输入:target = 11, nums = [1,1,1,1,1,1,1,1] 输出:0 提示: 1 <= target <= \(10^9\) 1 <= nums.length <= \(10^5\) 1 <= nums[i] <= \(10^5\)
双重循环暴力法通过,面试官提示可用前缀和优化
开发,比较有挑战性
redis、rabbitmaq
场景:用户注册,用手机号注册,填写信息后发送短信验证码,填写验证码后注册成功。
场景:用户下单后,订单系统需要通知库存系统
没说上来
1.主键索引 2.唯一索引 3.普通索引 4.空间索引 5.全文索引
select 字段和索引顺序不一致,导致oom
查询优化: 尽量使用索引,避免全表扫描
避免where 语句中判断null、使用不等于比较、使用or、使用函数等操作,这会导致全表扫描
插入优化:
1、合并sql语句
2、在事务中进行插入处理
3、数据有序插入
#{}是预编译、是一个占位符
${}是字符串、是一个拼接符。
使用#{}可以有效地防止SQL注入,能够提高系统安全性
⼯⼚模式、单例模式、匹配者模式
1、有频繁实例化然后销毁的情况,也就是频繁的 new 对象,可以考虑单例模式;
2、创建对象时耗时过多或者耗资源过多,但又经常用到的对象;
3、频繁访问 IO 资源的对象,例如数据库连接池或访问本地文件;
依赖注入是指在Spring创建对象的过程中,把对象依赖的属性注入到对象中
不用自己去创建对象,但必须描述怎么创建对象,在配置文件中配置哪些组件需要哪些服务
会有ioc容器自动将它们装配到一起
先自我介绍,然后问了下工作情况和一些基本信息,最后问了期望薪资
/** * 给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。 * 数组中的每个元素代表你在该位置可以跳跃的最大长度。 * 判断你是否能够到达最后一个下标。 * <p> * 示例 1: * 输入:nums = [2,3,1,1,4] * 输出:true * 解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。 * <p> * 示例 2: * 输入:nums = [3,2,1,0,4] * 输出:false * 解释:无论怎样,总会到达下标为 3 的位置。但该下标的最大跳跃长度是 0 , 所以永远不可能到达最后一个下标。 */
dfs 遍历,找不到就回退上一步,继续找,直到找到,面试官后面给一组用例,全部通过
然后问一些八股文,然后深入到项目,具体问题忘了
主管忙,比较难约,过了一周才面上
问些个人信息、离职原因、之前工作相关、加班的一些问题