Java开发-技术面

某互联网公司 · Java开发工程师 · 河南 · 2026-06

《面试题目》

  1. ArrayList排序方式
  2. 数组和链表的区别
  3. 往中间删除数据,数组和链表的时间复杂度
  4. 单向链表逆序打印的方式
  5. sql倒数第2页怎么查询
  6. 在前一题基础上,数据量很大怎么优化
  7. 联合索引创建顺序
  8. 索引失效的情况
  9. 用户定位产生大量抖动相似点,如何绘制最终轨迹线

《参考解析》

  1. MySQL深度:MySQL InnoDB使用B+树索引,支持ACID事务。关键知识点:聚簇索引(主键索引)叶节点存完整行数据;辅助索引叶节点存主键值(需回表);MVCC通过undo log版本链+ReadView实现多版本并发控制,解决脏读/不可重复读;事务隔离级别从低到高:读未提交→读已提交→可重复读(默认)→串行化。

  2. 算法题解析:常用算法思路:动态规划(状态转移方程,自底向上);BFS/DFS(图遍历,BFS找最短路,DFS回溯);双指针(有序数组去重/两数之和);滑动窗口(子串/子数组问题);二分查找(有序或单调性)。时间复杂度分析:关注最坏情况和平均情况。