777 Interview Notes
  • 🎯ᐕ)୨ 戳我戳我
  • 社招
    • 叨叨
  • 外企
    • 上海外企汇总
  • 数据结构与算法
    • 简介
    • 题型
      • Template
      • 动态规划
        • LEETCODE 5. 最长回文子串
        • LEETCODE 32. 最长有效括号
        • LEETCODE 44. 通配符匹配
        • LEETCODE 62. 不同路径
        • LEETCODE 63. 不同路径 II
        • LEETCODE 64. 最小路径和
        • LEETCODE 97. 交错字符串
        • LEETCODE 120. 三角形最小路径和
        • LEETCODE 122. 买卖股票的最佳时机 II
        • LEETCODE 139. 单词拆分
        • LEETCODE 174. 地下城游戏
        • LEETCODE 188. 买卖股票的最佳时机 IV
        • *LEETCODE 222. 完全二叉树的节点个数
        • LEETCODE 309. 最佳买卖股票时机含冷冻期
        • LEETCODE 343. 整数拆分
        • LEETCODE 494. 目标和
        • LEETCODE 718. 最长重复子数组
        • LEETCODE 837. 新21点
        • LEETCODE 1014. 最佳观光组合
        • LCOF 10-II. 青蛙跳台阶问题
        • LCOF 14-I. 剪绳子
        • LCOF 19. 正则表达式匹配
        • LCOF 42. 连续子数组的最大和
        • LCOF 46. 把数字翻译成字符串
        • LCOF 47. 礼物的最大价值
        • LCOF 48. 最长不含重复字符的子字符串
        • LCOF 49. 丑数
        • LCOF 63. 股票的最大利润
      • 贪心
        • LEETCODE 12. 整数转罗马数字
        • LEETCODE 122. 买卖股票的最佳时机 II
        • *LEETCODE 316. 去除重复字母
        • LEETCODE 435. 无重叠区间
        • LEETCODE 455. 分发饼干
        • LEETCODE 605. 种花问题
        • LEETCODE 860. 柠檬水找零
        • LEETCODE 1046. 最后一块石头的重量
        • LCOF 14-I. 剪绳子
        • LCOF 14-II. 剪绳子 II
      • 双指针
        • LEETCODE 4. 寻找两个正序数组的中位数
        • LEETCODE 19. 删除链表的倒数第N个节点
        • LEETCODE 75. 颜色分类
        • LEETCODE 86. 分隔链表
        • LCOF 04. 二维数组中的查找
        • LCOF 21. 调整数组顺序使奇数位于偶数前面
        • LCOF 24. 反转链表
        • LCOF 52. 两个链表的第一个公共节点
        • LCOF 57. 和为s的两个数字
        • LCOF 58 - I. 翻转单词顺序
      • 滑动窗口
        • LEETCODE 239. 滑动窗口最大值
        • LEETCODE 424. 替换后的最长重复字符
        • LEETCODE 643. 子数组最大平均数 I
        • LEETCODE 1208. 尽可能使字符串相等
        • LEETCODE 1423. 可获得的最大点数
        • LCOF 59 - I. 滑动窗口的最大值
      • 深度优先搜索
        • LEETCODE 207. 课程表
        • *LEETCODE 210. 课程表 II
        • LEETCODE 329. 矩阵中的最长递增路径
        • LEETCODE 547. 省份数量
        • LEETCODE 785. 判断二分图
        • LCOF 12. 矩阵中的路径
        • LCOF 13. 机器人的运动范围
        • LCOF 34. 二叉树中和为某一值的路径
        • LCOF 38. 字符串的排列
        • LCOF 54. 二叉搜索树的第k大节点
        • LCOF 55 - I. 二叉树的深度
        • LCOF 55 - II. 平衡二叉树
        • LCOF 68 - II. 二叉树的最近公共祖先
      • 广度优先搜索
        • LEETCODE 547. 省份数量
        • LCOF 32 - I. 从上到下打印二叉树
        • LCOF 32 - II. 从上到下打印二叉树 II
        • LCOF 32 - III. 从上到下打印二叉树 III
        • LCOF 55 - I. 二叉树的深度
      • 前缀和
        • LEETCODE 560. 和为K的子数组
      • 背包问题
        • LEETCODE 494. 目标和
      • HashMap
        • LEETCODE 128. 最长连续序列
        • LEETCODE 242. 有效的字母异位词
        • LEETCODE 350. 两个数组的交集 II
        • LEETCODE 560. 和为K的子数组
        • LCOF 03. 数组中重复的数字
        • LCOF 35. 复杂链表的复制
        • LCOF 50. 第一个只出现一次的字符
      • HashSet
        • LEETCODE 888. 公平的糖果棒交换
        • LCOF 61. 扑克牌中的顺子
      • 数组
        • LEETCODE 31. 下一个排列
        • LEETCODE 75. 颜色分类
        • LEETCODE 189. 旋转数组
        • LEETCODE 228. 汇总区间
        • LEETCODE 442. 数组中重复的数据
        • LEETCODE 448. 找到所有数组中消失的数字
        • LEETCODE 560. 和为K的子数组
      • 模拟
        • LEETCODE 860. 柠檬水找零
        • LCOF 29. 顺时针打印矩阵
        • LCOF 31. 栈的压入、弹出序列
      • 排序
        • LCOF 45. 把数组排成最小的数
        • LCOF 51. 数组中的逆序对
      • 递归
        • LCOF 06. 从尾到头打印链表
        • LCOF 07. 重建二叉树
        • LCOF 10-I. 斐波那契数列
        • LCOF 16. 数值的整数次方
        • LCOF 24. 反转链表
        • LCOF 25. 合并两个排序的链表
        • LCOF 26. 树的子结构
        • LCOF 27. 二叉树的镜像
        • LCOF 28. 对称的二叉树
        • LCOF 64. 求1+2+…+n
      • 队列
        • LCOF 59 - I. 滑动窗口的最大值
        • LCOF 59 - II. 队列的最大值
      • 字符串
        • LEETCODE 5. 最长回文子串
        • *LEETCODE 165. 比较版本号
        • LEETCODE 205. 同构字符串
        • LEETCODE 242. 有效的字母异位词
        • LEETCODE 678. 有效的括号字符串
        • LEETCODE 830. 较大分组的位置
        • LCOF 05. 替换空格
        • LCOF 20. 表示数值的字符串
        • LCOF 38. 字符串的排列
        • LCOF 45. 把数组排成最小的数
        • LCOF 58 - I. 翻转单词顺序
        • LCOF 58 - II. 左旋转字符串
        • LCOF 67. 把字符串转换成整数
      • 二分查找
        • LEETCODE 4. 寻找两个正序数组的中位数
        • LEETCODE 33. 搜索旋转排序数组
        • LEETCODE 34. 在排序数组中查找元素的第一个和最后一个位置
        • LEETCODE 153. 寻找旋转排序数组中的最小值
        • LEETCODE 154. 寻找旋转排序数组中的最小值 II
        • LEETCODE 278. 第一个错误的版本
        • LEETCODE 704. 二分查找
        • LEETCODE 744. 寻找比目标字母大的最小字母
        • LEETCODE 852. 山脉数组的峰顶索引
        • LCOF 11. 旋转数组的最小数字
        • LCOF 53 - I. 在排序数组中查找数字 I
        • LCOF 53 - II. 0~n-1中缺失的数字
      • 位运算
        • LEETCODE 338. 比特位计数
        • LEETCODE 461. 汉明距离
        • LCOF 15. 二进制中1的个数
        • LCOF 56 - I. 数组中数字出现的次数
        • LCOF 56 - II. 数组中数字出现的次数 II
      • 链表
        • LEETCODE 19. 删除链表的倒数第N个节点
        • LEETCODE 86. 分隔链表
        • # LEETCODE 234. 回文链表
        • LEETCODE 237. 删除链表中的节点
        • LCOF 06. 从尾到头打印链表
        • LCOF 18. 删除链表的节点
        • LCOF 22. 链表中倒数第k个节点
        • LCOF 24. 反转链表
        • LCOF 25. 合并两个排序的链表
        • LCOF 35. 复杂链表的复制
        • LCOF 36. 二叉搜索树与双向链表
        • LCOF 52. 两个链表的第一个公共节点
      • 二叉树
        • LEETCODE 94. 二叉树的中序遍历
        • LEETCODE 95. 不同的二叉搜索树 II
        • LEETCODE 96. 不同的二叉搜索树
        • # LEETCODE 98. 验证二叉搜索树
        • LEETCODE 104. 二叉树的最大深度
        • LEETCODE 108. 将有序数组转换为二叉搜索树
        • LEETCODE 112. 路径总和
        • # LEETCODE 144. 二叉树的前序遍历
        • LEETCODE 543. 二叉树的直径
        • LEETCODE 617. 合并二叉树
        • LEETCODE 958. 二叉树的完全性检验
        • LCOF 07. 重建二叉树
        • LCOF 26. 树的子结构
        • LCOF 27. 二叉树的镜像
        • LCOF 28. 对称的二叉树
        • LCOF 32 - I. 从上到下打印二叉树
        • LCOF 32 - II. 从上到下打印二叉树 II
        • LCOF 32 - III. 从上到下打印二叉树 III
        • LCOF 33. 二叉搜索树的后序遍历序列
        • LCOF 34. 二叉树中和为某一值的路径
        • LCOF 36. 二叉搜索树与双向链表
        • LCOF 37. 序列化二叉树
        • LCOF 54. 二叉搜索树的第k大节点
        • LCOF 55 - I. 二叉树的深度
        • LCOF 55 - II. 平衡二叉树
        • LCOF 68 - I. 二叉搜索树的最近公共祖先
        • LCOF 68 - II. 二叉树的最近公共祖先
      • 堆
        • LEETCODE 215. 数组中的第K个最大元素
        • LEETCODE 1046. 最后一块石头的重量
        • LCOF 40. 最小的k个数
        • LCOF 41. 数据流中的中位数
      • 栈
        • LEETCODE 32. 最长有效括号
        • LCOF 06. 从尾到头打印链表
        • LCOF 09. 用两个栈实现队列
        • LCOF 27. 二叉树的镜像
      • 大数
      • 数学
        • LEETCODE 16. 最接近的三数之和
        • LEETCODE 9. 回文数
        • LEETCODE 238. 除自身以外数组的乘积
        • LEETCODE 990. 等式方程的可满足性
        • LCOF 43. 1~n 整数中 1 出现的次数
        • LCOF 44. 数字序列中某一位的数字
        • LCOF 62. 圆圈中最后剩下的数字
        • LCOF 67. 把字符串转换成整数
      • 多线程
      • 回溯
        • LEETCODE 17. 电话号码的字母组合
        • LEETCODE 46. 全排列
        • LCOF 34. 二叉树中和为某一值的路径
        • LCOF 38. 字符串的排列
      • 设计
        • LEETCODE 146. LRU缓存机制
        • LCOF 30. 包含min函数的栈
        • LCOF 37. 序列化二叉树
        • LCOF 41. 数据流中的中位数
        • LCOF 59 - II. 队列的最大值
      • 分治
        • LCOF 16. 数值的整数次方
        • LCOF 17. 打印从1到最大的n位数
        • LCOF 33. 二叉搜索树的后序遍历序列
        • LCOF 36. 二叉搜索树与双向链表
        • LCOF 40. 最小的k个数
        • LCOF 51. 数组中的逆序对
    • 剑指Offer
      • 03. 数组中重复的数字【排序/哈希/比较交换】
      • 04. 二维数组中的查找【线性查找】
      • 05. 替换空格【字符串】
      • 06. 从尾到头打印链表【栈/递归】
      • 07. 重建二叉树【递归】
      • 09. 用两个栈实现队列【辅助栈】
      • 10-I. 斐波那契数列【DP】
      • 10-II. 青蛙跳台阶问题【DP】
      • 11. 旋转数组的最小数字【二分查找】
      • 12. 矩阵中的路径【DFS】
      • 13. 机器人的运动范围【DFS/BFS】
      • 14-I. 剪绳子【DP/贪心】
      • 14-II. 剪绳子 II【贪心】
      • 15. 二进制中1的个数【位运算】
      • 16. 数值的整数次方【分治】
      • *17. 打印从1到最大的n位数
      • 18. 删除链表的节点
      • *19. 正则表达式匹配
      • 20. 表示数值的字符串
      • 21. 调整数组顺序使奇数位于偶数前面【双指针】
      • 22. 链表中倒数第k个节点【快慢指针】
      • 24. 反转链表【递归/双指针】
      • 25. 合并两个排序的链表【递归】
      • 26. 树的子结构【递归】
      • 27. 二叉树的镜像【递归/辅助栈】
      • 28. 对称的二叉树【递归】
      • 29. 顺时针打印矩阵【模拟】
      • 30. 包含min函数的栈【辅助栈】
      • 31. 栈的压入、弹出序列【辅助栈】
      • 32 - I. 从上到下打印二叉树【BFS】
      • 32 - II. 从上到下打印二叉树 II【BFS】
      • 32 - III. 从上到下打印二叉树 III【BFS 双端队列】
      • 33. 二叉搜索树的后序遍历序列【分治 递归】
      • 34. 二叉树中和为某一值的路径【递归 回溯】
      • *35. 复杂链表的复制【哈希表】
      • 36. 二叉搜索树与双向链表【DFS】
      • 37. 序列化二叉树【BFS】
      • 38. 字符串的排列【DFS】
      • *39. 数组中出现次数超过一半的数字【哈希/摩尔投票】
      • 40. 最小的k个数【堆】
      • 41. 数据流中的中位数【堆】
      • 42. 连续子数组的最大和【DP】
      • 43. 1~n 整数中 1 出现的次数【找规律】
      • 44. 数字序列中某一位的数字【找规律】
      • 45. 把数组排成最小的数【排序】
      • 46. 把数字翻译成字符串【DP】
      • 47. 礼物的最大价值【DP】
      • 48. 最长不含重复字符的子字符串【滑动窗口】
      • 49. 丑数【DP】
      • 50. 第一个只出现一次的字符【哈希表】
      • *51. 数组中的逆序对【归并排序】
      • 52. 两个链表的第一个公共节点【双指针】
      • 53 - I. 在排序数组中查找数字 I【二分查找】
      • 53 - II. 0~n-1中缺失的数字【二分查找/位运算】
      • 54. 二叉搜索树的第k大节点【中序遍历】
      • 55 - I. 二叉树的深度【DFS/BFS】
      • 55 - II. 平衡二叉树【DFS】
      • 56 - I. 数组中数字出现的次数【位运算】
      • 56 - II. 数组中数字出现的次数 II【位运算】
      • 57. 和为s的两个数字【双指针/哈希表】
      • 57 - II. 和为s的连续正数序列【双指针】
      • 58 - I. 翻转单词顺序【双指针】
      • 58 - II. 左旋转字符串【字符串】
      • *59 - I. 滑动窗口的最大值【滑动窗口】
      • 59 - II. 队列的最大值【队列】
      • *60. n个骰子的点数【DP】
      • 61. 扑克牌中的顺子【Set/排序】
      • 62. 圆圈中最后剩下的数字【约瑟夫环】
      • 63. 股票的最大利润【DP】
      • 64. 求1+2+…+n【短路】
      • 65. 不用加减乘除做加法【位运算】
      • *66. 构建乘积数组【DP】
      • 67. 把字符串转换成整数
      • 68 - I. 二叉搜索树的最近公共祖先【迭代/递归】
      • 68 - II. 二叉树的最近公共祖先【递归】
    • 常见问题
      • 俩必须掌握的排序
      • 腾讯常见问题
      • 字节常见问题
  • 计算机网络
    • 简介
    • 基础知识
      • 综述
      • 物理层
      • 链路层
      • 网络层
      • 传输层
      • 应用层
        • HTTP
    • 常见问题
      • 常见问题带答案
  • 操作系统
    • 简介
    • 基础知识
      • 概述
      • 进程管理
      • 死锁
      • 内存管理
      • 设备管理
      • 链接
    • 常见问题
  • 数据库
    • 简介
    • 基础知识
      • SQL 语法
      • 数据库系统基础
    • 常见问题
  • Java
    • 简介
    • 基础知识
      • Java 基础
      • Java 容器
      • Java 并发
      • Java 虚拟机
      • Java I/O
    • 常见问题
  • Android
    • 简介
    • 基础知识
      • Android 基础
      • Android 进阶
      • 开源框架
      • 具体场景分析
    • 常见问题
  • 面经
    • 简介
      • 777牌面筋
    • 腾讯面经汇总
      • 实习
      • 提前批
      • 秋招
    • 阿里面经汇总
      • 杂
      • HR 面准备
    • 字节跳动面经汇总
      • 实习
        • Android
          • 字节跳动客户端一二面面经
          • 字节客户端暑期实习一面面经
          • 字节跳动客户端面试经历
          • 字节实习面筋
          • 移动客户端开发(抖音)面经
          • [21届秋招] 字节——安卓开发实习生 面经
          • 字节跳动-头条Android开发实习生面试
          • 字节 安卓一面面经
          • 字节跳动安卓客户端面经
          • 字节跳动安卓日常实习生凉经
          • 字节 客户端开发 一面
          • 字节安卓实习一面
          • 字节跳动客户端一面面经
          • 字节跳动安卓实习一二面面经
          • BAT集齐!Java/安卓暑期实习面经汇总
          • 字节跳动(Andriod方向)一二三面面经
          • 字节客户端神奇二面
          • 字节抖音(一面客户端开发)
          • 字节跳动安卓、后端实习5轮面经
          • 2020技术开发岗面经:腾讯 & 字节跳动(已Offer)
          • 字节跳动安卓客户端面经(安卓开发零经验)
          • 字节跳动Android客户端一面凉经
          • 西瓜视频一面
          • 头条三面面筋+HR(已上岸,感谢各位牛友的帮助)
          • 字节跳动android实习生一面二面
          • 字节跳动 客户端实习生 1-5面 面经
          • 2019春招实习Android面试总结(后续再发秋招总结)
          • 字节客户端安卓开发三面面经
          • 字节跳动效率工程提前批Android实习面经
          • 字节 客户端 一二面面经 下周三面
          • 【字节跳动安卓暑假实习一面】
          • 字节跳动Android实习面经
          • 字节跳动 Android客户端 一~三面(已收到offer)
          • 字节跳动暑期实习Android一二三hr面经(offer)
        • iOS
          • 字节ios懂车帝实习 三面已过
          • 字节懂车帝IOS实习一面面经
          • 字节飞书iOS客户端实习一面面经
          • 字节飞书iOS客户端二面面经[已OC]
          • 字节跳动iOS客户端实习面经
          • 字节飞书iOS客户端日常实习面经 一二面+HR面
          • 21届字节ios开发日常实习 一二三面面经(已拿offer)
          • 字节iOS客户端实习123面经
          • 字节iOS客户端实习 三次技术面面经
          • 字节跳动 iOS日常实习三面+hr面挂
          • 字节跳动ios客户端一二三四+hr面(已收到offer)
          • 字节IOS客户端实习面经
          • iOS实习面经(字节美团阿里蘑菇街)
          • 字节跳动面经|iOS开发|大三暑期实习(已收offer)
          • 字节ios[深圳]实习一面面经
          • 字节跳动飞书iOS开发一二面
          • 字节跳动ios客户端实习3+hr面经【已拿offer】
          • 字节客户端三面完成后两天接到hr电话 ,许愿offer
          • 字节跳动iOS客户端日常实习一、二、三面凉经
          • 21届大三抖音ios 一面 二面 三面 面经(挂hr……)
          • 字节跳动iOS客户端实习生面经
          • 抖音iOS 暑期实习 过经(问了安卓)
          • 字节跳动 IOS开发实习 面经 (内附投递经验与总结!)
          • 字节三面问题整理
      • 提前批
        • 字节跳动的校招面试精髓(提前批免笔试)
        • 字节提前批移动端面经(1-3面)已拿意向书
        • 字节跳动客户端开发两次一轮游(21 届秋招)
        • 字节提前批。客户端开发一面二面
        • 字节提前批 安卓客户端加面 四面
        • 字节跳动 客户端开发提前批一面凉经
        • 字节跳动提前批安卓客户端 一二三四+HR面(已意向书)
        • 字节跳动提前批客户端至二面(凉透经)
        • 字节提前批-客户端Android一面面经
        • 字节提前批客户端一二三面面经(已凉)
        • 字节跳动抖音Android客户端一二三面面经
        • 字节客户端开发面经
      • 秋招
        • 2020年字节跳动秋招面经(抖音全栈已oc)
        • 字节客户端 一、二面面经,许愿三面~
        • 字节客户端三~四面面经,已oc(更新:已邮件)
        • 字节客户端几乎无安卓基础三面面经
        • 字节客户端抖音一二三面凉经
        • 上海抖音客户端开发面经
        • 字节跳动安卓工程师一面凉
        • 字节跳动客户端一面二面凉经
        • 字节视频架构一面凉经(安卓)
        • 字节客户端一二三面面经,已收到意向书
        • 字节客户端三面面经分享,求一个意向书(已收到意向书)
        • 字节教育客户端一二面,求个offer
        • 字节跳动客户端开发一面+二面
        • pyer零基础字节跳动客户端面试
        • 字节上海抖音客户端
        • 字节跳动客户端开发0基础 一面凉经
  • 杂
    • Git
    • 智力题
    • 设计模式
      • 单例模式
      • MVC MVP MVVM
    • 简历
  • JAVASCRIPT
    • 简介
    • 基础知识
    • 常见问题
由 GitBook 提供支持
在本页
  • 代理模式
  • JVM
  • 变量
  • 类加载 双亲
  • 异常 2
  • 热更新原理。
  • 抽象类和接口
  • java容器
  • HashMap 7
  • 类型(装箱拆箱
  • 集合 arraylist等
  • 红黑树
  • CAS
  • 回收 6(Java GC(Garbage Collection,垃圾收集,垃圾回收)机制)
  • 多线程 16
  • 乐观锁
  • synchronized与volatile关键字的作用
  • 多线程场景题
  • wait()
  • 锁
  • AsyncTask的原理。
  • 杂
  • 线程池 5
  • 临界区概念
  • 引用 2
  • 序列化 2
  • 反射 2
  • 关键字 2
  • 编译
  • json 2
  • ==和.equals()的区别?
  • 重写和重载的区别。
  • String场景题
  • 内存泄漏问题
  • LRU
  • 泛型
  • 类型擦除
  • 拷贝
  • JMM - Java内存模型
  • Java 内存区域
  • 堆栈
  • 内存分配区域
  • 数据类型
  • static
  • 内部类
  • 面向对象
  • 和xx的区别/对比
  • IDE
  • 注解

这有帮助吗?

  1. Java

常见问题

目前正处于草稿状态中

上一页Java I/O下一页简介

最后更新于4年前

这有帮助吗?

要对Java的一些常见问题有所准备,比如GC,面向对象的特征等等。其他语言的话对应准备一些问题就行。

⬆️ 关于java注释

代理模式

Java的三种代理模式:

JVM

jvm内存区域,为什么要有jvm // java guide

所以JVM所担任的职责之一,就是当地的翻译员,将位元码文件翻译为当时作业系统看得懂的0101序列。不过这不是最重要的,基本上如果只是要翻译员的话,直译器(Interpreter )就办得到了。

  JVM有个很重要的观念就是:「对于Java程式而言,其实它只认识一种作业系统(或说是一种机器),这个系统叫作JVM,而对于JVM而言,位元码文件就是它的可执行文件!也就是格式为.class的文件。Java代码程序,理想上,并不用理会真正执行于哪个平台之上,它只要知道如何执行于JVM之上就可以了,至于JVM实际上如何与底层平台作沟通,则是JVM自己的事!」这个观念非常的重要,对于以后能够搞清楚所PATH变量与CLASSPATH变量的概念,也有一定的帮助。

jvm 内存

Java内存(分配->回收)

jvm启动过程? 验证是验证什么

//

JVM内存管理相关问题

说说JVM的内存吧,他们都是干啥的?对象怎么创建?

每个区域都会发生怎样的异常,谁会发生OOM?

内存分配方式?

堆和栈的区别?

GC?垃圾回收?

class文件生成过程?

Android虚拟机与Java虚拟机之间区别

变量

全局变量和局部变量(分配在什么地方)// dz

静态变量,实例变量,构造函数的初始化顺序。//java基础 static 6.

类加载 双亲

类加载过程

类加载过程,我扯到了invokestatic,面试官问什么时候调用?我答在调用静态方法时调用

讲讲Java中类的加载过程

类加载机制,什么时候需要对类进行初始化。(这个就是在问类初始化的时机

String类如何被加载的【类加载机制】;

String类如何被加载的【类加载机制】;双亲委派模型【常规题】

双亲委派模型【常规题】

//

java对象的加载机制

//

你觉得像成员变量、成员方法、然后静态类,这些类在加载的时候,顺序是什么样的 // meituan

异常 2

异常体系,可以catch error吗

Java中常见的异常。

//

说一下 JAVA 的异常、泛型、反射。

详细说异常分类

热更新原理。

// 还有安卓的热启动

抽象类和接口

抽象类与接口的区别

抽象类和接口的区别

Abstract class和interface有什么区别?

多态,有哪些实现

继承多态如何实现

多态

C++和java如何实现多态性,public的父类中子类重写能不能用protected?反过来呢?

如何实现多态,多态的底层实现原理是什么(方法表)

//

什么是接口回调?为什么使用接口回调?

java容器

有哪些

说一下Java三种数据集:Map,List,Set,它们分别的特点是什么,它们的优缺点分别是什么

HashMap 7

hashmap底层原理(必考)hash值的计算、为什么要重写equals和hashcode 、插入的时候会发生啥

hashcode 为什么出现、是什么、equals关系

hashmap的扩容机制,为什么要俩倍扩容。

HashMap的源码,扩容的条件。

hashmap 原理 机制 扩容(他说我扩容说太简单了。。)

hashmap 扩容,为啥是 2 倍,为啥 size 是 2 的幂次方

Hashmap的具体实现

ArrayList和HashMap了解吗?(面试前恶补过HashMap,这部分说了蛮多的。)

设计一个K-V的数据结构应该考虑哪些问题,如何解决这些问题【说了一下哈希碰撞,多线程访问,初始容量等】// 啊 k-v就是key-value就是哈希表,要有应变能力

HashMap原理,get、put的时间复杂度

谈谈HashMap(为什么不适用基础数据类型、添加的时候需要注意什么、添加的key有什么特殊性)

介绍一下所有的map,以及他们之间的对比,适用场景。

ConcurrentHashMap和HashMap底层实现

hashmap底层结构 扩容机制 查询机制 hash算法

hashmap的key可以是基本类型吗 如果一定要定义为基本类型怎么做 //⭐️

讲一下hashCode()。(这里提到了hashmap的原理)

哈希构造方法、哈希冲突解决方法

//

hashmap的实现原理 get的时间复杂度 如何优化冲突(改变数组长度、再哈希、链表优化为红黑树)

字符串和其他类型的数据做Key如何计算哈希值?(字符串可以使用ASCII码的值求和、或者BKDR等非聚合哈希算法)

concurrentHashmap

HashMap、HashTable、ConcurrentHashMap

HashMap和HastTable,HashMap安全?不安全用什么?hash()?HashTable是怎么实现安全的?

HashMap如何实现、HashMap和HashTable区别、ConcurrentHashMap实现原理。

treeMap的原理和linkeHashMap的原理

类型(装箱拆箱

基本类型和包裹类型哪个占用资源多 为什么 //⭐️

集合 arraylist等

说说几种集合的区别 可能是我回答集合的时候顺带把所有的底层实现也都说了,没问我数据结构

ArrayList与LinkedList区别,查找的时间复杂度是多少【底层实现方式不一样】

ArrayList和LinkedList的区别。

List如何删除。(为什么用iterator的不用List的删除方法,讲了一下ConcurrentModificationException)

ArrayList<String> 删除空字符串("")对象

sparseArray

//

ArrayList 底层实现

ArrayList和LinkedList的区别

对ArrayList一个读操作,一个写操作,你用多线程咋实现。死锁你知道不?你怎么解决?

arraylist与vector的区别

介绍一下Arraylist和Linkedlist,说一下它们各自的优缺点是什么,以及它们有什么异同点

红黑树

扯到红黑树特性(就知道什么黑节点层数一样。扯了查找树的特性,试图糊弄)

红黑树。

CAS

CAS介绍,CAS有什么问题,Java是否有解决方法

回收 6(Java GC(Garbage Collection,垃圾收集,垃圾回收)机制)

gc算法,收集器,stop the world

Java垃圾回收机制,

如何判断堆中哪些对象需要被回收

Java内存,回收的搜索算法:引用计数和根搜索算法。

gc一整套

JVM的GC机制。

gc回收,可达性分析法,

了解JVM吗?讲了JVM的体系结构和GC回收机制。

Java垃圾回收的过程

可以作为GCRoot根的对象有哪些【局部变量表中的对象,静态变量,常量,本地方法栈中的对象】

对象判死的两种方法,gc roots有哪些

Java的GC机制,引用计数和可达性分析算法,finize()方法,四种回收算法,哪些对象可以作为GC ROOTS对象

如何减少GC,有哪些高频方***经常创建对象(好像是这个意思...) 【这里他问我擅长什么,我说gc(因为关于回收算法和垃圾收集器我记得比较熟),然后他说分代收集算法那些就不用讲了,就一直在问一些我不懂的东西,我真是搬起石头砸自己的脚....】

多线程 16

线程同步问题(为什么需要同步&怎么实现同步)

多核cpu,多线程怎么访问同一个内存

多线程有什么用,怎么处理

多线程相关的几个关键字

volatile关键字作用

讲一下volatile

synchronized修饰代码块,方法,静态代码块的区别

线程安全。我回答了sychronized关键字(关于锁,wait,notify参考我的一篇博客---Java 多线程)。面试官追问是否了解volite关键字,我忘了没回答出来。面试官追问是否了解自旋锁,乐观锁,悲观锁等,我回答了解但是没用过。

lock锁和sy锁 以及使用场景 // 这个我不确定隶属于OS还是java多线程范畴 先放在这 之后找答案再看

Java怎么实现多线程。

Java线程的管理。

线程间切换的方法。线程间通讯。

sync和lock区别,condition干什么

synchronized和lock区别

jvm线程怎么调度的

线程生命周期,我说到中间他就会打断说那这个情况怎么出现呢,java怎么实现的,如何结束线程?提供了什么方法

显式控制各个线程竞争的有哪些对象呢?

线程(线程池的维护/Synchronized/线程进程区别/死锁和如何解决

写一个java多线程

为什么要使用多线程

Java中Thread与Runnable在线程管理上的区别

实现两个数组利用两个线程交替打印,且固定由第一个开始

工作内存和主内存。(这里是给了一个例子,主线程有一个变量a,子线程里用到了这个变量,问这两处的变量是不是一个东西)

线程安全。

// tencent

给你2个线程,如何产生死锁?为什么会产生死锁?

ThreadLocal

Thread直接继承和使用Runnable

线程的状态 // 2

有没有涉及过多线程编程,Java中线程同步有哪些方法

java如何实现线程的互斥

乐观锁

乐观锁和悲观锁,各自的使用场景

乐观锁和悲观锁

手写单例模式(double-check)

乐观锁写单例模式

synchronized与volatile关键字的作用

说下Java的synchronized和volatile关键字,可见性,重排序,原子性

线程同步,我又说了sychroized

是否了解Java的atomic,以及好多很底层的东西 (原子性?

wait()的用法,notifyAll()的用法,notify()唤醒的是哪一个线程。

给定代码,会输出i等于什么;如何令i输出为1【用static与volatile修饰,主线程调用sleep()】;如何保证i一定输出为1,写一下代码【用wait()与notifyAll()?】;Runnable的run()方法中使用this指的是什么,Runnable还是Thread【Runnable的匿名内部类】

class A {
    private int i = 0;
    public static void main(String[] args) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                i = 1;
            }
        }).start();
        System.out.println(i);
    }
}

//

讲讲violate,synchronized,静态方法synchronized和普通方法synchronized有什么不同,你在哪些场景用过这些,你考虑应该有哪些场景使用

讲讲default方法

synchronize关键字在字段和方法中使用区别

sychronize关键字修饰同类的两个方法,调用会阻塞吗?

有没有用到synchronized关键词,做什么用的,如果调用一个对象的两个synchronized方***不会阻塞

多线程场景题

两个用volatile的方法分别对一个为0的常量++5000次,最后结果会是10000吗

如果有一个全局变量,有10000个线程,每个线程对这个元素做+1操作,那么结束后这个变量的值一定是10000吗?如果不是举例说明为什么不是?信号量的机制 // Tuji

线程和进程有什么区别,Java怎么使用线程,线程的新建和销毁的具体过程。

wait()

wait和sleep的区别?

sleep和wait的区别

锁

锁的底层实现是怎样的

锁原理

java 的锁怎么实现的?

lock锁和sy锁 以及使用场景

Java synchronized的类锁和对象锁,它们区别,哪些是对象锁,哪些是类锁

Java有哪几种锁

synchronized和可重入锁的区别

countdownLatch

synchronized reetrantlock

reentrantReadWriteLock

说说自旋锁,内部实现。

// tencent

你语言 Java 用的最多是吧?Java 里面有个共享变量,我想保证它的线程安全,比如对它的修改做到线程安全,应该怎么解决?那么加锁可以加什么锁?

volatile 关键字的具体作用是什么?

volatile 可不可以保证线程安全,在什么情况之下,可以保证线程安全?

Java 里面,Object 类有一个 hashCode() 方法和 equals() 方法,可以讲一下它们的区别吗?

什么时候要重写这两个方法?

什么是可重入锁

object.wait() 可重入吗?

什么是公平锁,什么是非公平锁

自己基于原生方法实现一个公平锁

AsyncTask的原理。

杂

优先级翻转

int占多少字节【4】byte呢【1】,如何判断byte的从右数第n位是否为1,写个if语句【((b >> n) & 1) == 1】

Object有哪些公有方法。

//

java 有哪些语法糖

for-each 循环的原理

线程池 5

线程池介绍,任务队列如果满了怎么办;

线程池源码

线程池,线程池参数,从提交任务开始的过程

线程池

线程池/线程池参数

n个线程,应该开多大的线程池

//

怎么创建线程池,类名说一下,线程 池类型

线程池设计的时候需要注意哪些事情?

设计一个线程池

如果只用到少量线程需不需要使用线程池

临界区概念

引用 2

强引用、软引用、弱引用、虚引用,是什么?分别在什么时候用

四大引用

四种引用 软引用和弱引用的区别 软引用和强引用的区别

//

软引用是怎么用的,为什么有垃圾回收机制还能发生内存泄漏

序列化 2

反序列和序列化 为什么要? 什么情况下要?

序列化和反序列化

序列化就是将一个对象转换成字节序列,方便存储和传输。

反射 2

反射 为什么要反射? 什么时候用? 缺点?

(反射 反序列化)

java泛型,反射

关键字 2

static关键字:c跟java

static、final、finalize、finally?

final关键字

final关键字作用【修饰类不可继承,修饰方法不可重写,修饰对象无法重新赋值】

Java里的final有什么用法?

final关键字,final常量存储位置,常量池的好处

讲讲JAVA几个访问权限关键字

编译

java文件的编译方式,谁把源文件编译成.class文件

可以讲讲java和c

动态编译、静态编译

一个可执行文件的编译过程

json 2

除了Json还有哪些数据传输格式。

Json解析的时候是怎么将json解析为对应的类。

==和.equals()的区别?

// 这个可以说自己碰到的情况[-128,127]

重写equals方法(写不出,面试官一直引导我,最后面试官区去开会去了,让我自己出去查一查,菜)

讲一下equals()。

//

==和equals的区别

重写和重载的区别。

印象深刻的就java重载能不能重载返回值不同的函数,这块没回答出,然后java重载能不能重载相同的类,但是模板不同的参数。

String场景题

引用:

String a = new String();

b = a;

a = null;

b 是否= null?

String s=new String("123");建立了几个对象

String a = new String("abc")与String a = "abc"的区别【前者分配在堆上,后者在常量池中】

String StringBuffer StringBuilder区别?

创建一个字符串对象,这个对象分配在哪里?

String str = “123” + “456”;会创建几个对象。

//

String s = new String("hello")与String s = "hello"的区别

内存泄漏问题

(Java中static引起的内存泄漏问题等)

内部类会有内存泄漏问题吗 内部类为什么能访问外部类的变量,为什么还能访问外部类的私有变量。

讲一下内存泄漏

//

内存泄漏问题(Java中static引起的内存泄漏问题等)

内存泄漏?OOM?什么情况会OOM?

LRU

LRU***

为什么需要*? *是介于哪两个硬件之间的? 简单介绍一下LRU。 然后让我大概写一下模拟LRU的数据结构。

LRU怎么实现

LruCache

泛型

Java中的泛型,类型擦除,如果说Java的泛型是伪泛型,为什么不直接用object代替

泛型上界,下界定义/作用

java泛型,反射

Java的泛型擦除问题

//

泛型概念,extends、super、泛型擦除。

反射联想到 Retrofit 动态***实现

java 泛型方法如何确定类型

java 泛型中的?通配符

类型擦除

Java的类型擦除

拷贝

深拷贝/浅拷贝,怎么实现深-浅拷贝 CopyonWrite

讲一下clone(),深拷贝和浅拷贝的区别。

//

深拷贝 浅拷贝(内存溢出or垃圾回收时有什么区别?)

深拷贝和浅拷贝

父类没有执行深拷贝呢,子类如何让父类深拷贝呢?

JMM - Java内存模型

讲一下jmm

Java 内存区域

static和final修饰变量的区别,这两种变量存储在什么内存区域?Java的OOM主要发生在什么地方,介绍一下Java的内存区域有哪些?如果加载一个1M的图片,主要存储在什么地方?

Java有几种内存模式,其中变量/方法/类分别储存在哪里,栈内存主要用来存放什么

堆栈

如何在栈上开辟空间。

如何在堆里开辟空间。

怎么会造成栈溢出,堆溢出。

堆栈的区别

讲讲什么东西会导致一个类被NEW出来的时候对象在堆里面的大小不同

内存分配区域

(Java层面回答?对象引用在堆和栈都有么?函数内部new的对象存放在哪?)

数据类型

一个结构体,有一个short类型,一个int,一个char,在32位机器中占用多少存储空间

static

java静态内部类和非静态内部类的区别:内存分配,创建过程,内存泄漏问题?

Java中内部类和静态内部类的区别

Static 的理解

介绍一下Static这个命名字,以及用它命名的变量和类有什么不同于其他的地方

静态内部类是怎么实现单例的。

解释静态内部类单例的原理。

java内部静态类的作用是什么啊? //meituan

内部类

java 哪些内部类?内部类为什么局部变量用final

面向对象

面向对象的3个特性

面向对象的特点,与面向过程的区别

和xx的区别/对比

C++和JAVA的区别,java支持多继承吗

JAVA与JS(为什么都喜欢问这个?)

有C/C++/Java/Swift,询问你觉得这些语言有什么区别,优缺点,适用场景

指针了解吗?

java和C里new的区别

new 和 malloc的区别

Kotlin 与 Java 比较

IDE

平时用啥IDE?知道项目run之前干什么吗?

说了个编译和检查错误,但是面试官似乎还想让我说点东西,知识盲区.....后来跟同学交流了一下,应该是预编译、编译、汇编、链接。

注解

注解介绍下?

如下代码的会执行false吗?A a=new A(); System.out.println(a isInstance of A) ; //

Java可以自动管理内存,为什么会有OOM【可达性】

LRU的get时间复杂度是多少,为什么【只知道是干什么的但不了解】(不知道属不属于java

LRU怎么实现(hash+),详细解释步骤、时间复杂度,

⬆️

https://mp.weixin.qq.com/s/st3LORDRXMwADsCWdBH1KQ
https://www.cnblogs.com/leeego-123/p/10995975.html
Java 虚拟机
https://zhuanlan.zhihu.com/p/76327745
考察instanceof关键字用法
https://www.jianshu.com/p/14c3d36e6ffa
https://www.cnblogs.com/widget90/p/5577728.html
算法
算法
链表
https://blog.csdn.net/wangzhenxing991026/article/details/109785509
LogoJava 序列化 | 菜鸟教程
Logo匿名内部类导致内存泄露的面试题 - 云+社区 - 腾讯云