首页 文章详情

常见手撕代码题汇总!

Java中文社群 | 16 2023-06-25 22:12 0 0 0
UniSMS (合一短信)

面试就看 www.javacn.site 内容贼全

随着 Java 技术的发展,以及从业人员专业知识的不断提升,面试的难度也水涨船高越来越难了,所以八股也要与时俱进不断更新,这就是本篇文章诞生的目的之一。

我凭借自身的面试和被面试的经验,以及人工查阅并整理了牛某今年最新的 200 篇面经,总结了这篇文章,所以希望大家不要吝啬手中免费的赞,给作者点一波赞,谢谢了。

整理的部分面经展示:

一、最常见手撕代码题

  1. 链表判断是否有环(快手、美团、哈啰)
  2. 反转(区间)链表(猿辅导、美团)
  3. 合并两个有序链表(小米、滴滴、美团、蘑菇街)
  4. 二叉树遍历(快手、小米、小红书)
  5. 单例模式(快手面经多次出现)
  6. 手撕 LRU(滴滴、美团、阿里巴巴)
  7. 合并有序数组(美团)
  8. 快排(快手、百度)
  9. 两数之和(快手、滴滴、小米)
  10. 最长回文子串(小米、美团)
  11. 二叉树公共祖先(快手)

参考答案

1.链表判断是否有环

核心实现思路:使用快慢指针实现。参考链接:https://www.nowcoder.com/practice/650474f313294468a4ded3ce0f7898b9

2.反转(区间)链表

核心实现思路:使用栈反转链表。参考链接:https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca

3.合并两个有序链表

核心实现思路:使用递归或迭代的方式实现。参考连接:https://leetcode.cn/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/solution/he-bing-liang-ge-pai-xu-de-lian-biao-by-g3z6g/

4.二叉树遍历

  • 二叉树中序遍历:https://leetcode.cn/problems/binary-tree-inorder-traversal/solution/er-cha-shu-de-zhong-xu-bian-li-by-leetcode-solutio/
  • 二叉树前序遍历:https://leetcode.cn/problems/binary-tree-preorder-traversal/solution/er-cha-shu-de-qian-xu-bian-li-by-leetcode-solution/
  • 二叉树后序遍历:https://leetcode.cn/problems/binary-tree-preorder-traversal/solution/er-cha-shu-de-qian-xu-bian-li-by-leetcode-solution/

5.单例模式

双重效验锁的懒汉实现方式:

public class Singleton {
    private static volatile Singleton instance = null;
    private Singleton() {}
    public static Singleton getInstance() {
        if (instance == null) {
            synchronized (Singleton.class{
             if (instance == null) {
                 instance = new Singleton();
                }
            }
        }
        return instance;
    }
}

6.手撕 LRU

核心实现思路:哈希表 + 双向链表实现。参考连接:https://leetcode.cn/problems/lru-cache/solution/lruhuan-cun-ji-zhi-by-leetcode-solution/

7.合并有序数组

核心实现思路:双指针,注意一般情况不能使用 Java 内置的方法,比如 Arrays.sort() 合并之后排序实现。参考连接:https://leetcode.cn/problems/merge-sorted-array/solution/he-bing-liang-ge-you-xu-shu-zu-by-leetco-rrb0/

8.快排

参考连接:https://leetcode.cn/circle/article/kiHnKs/

9.两数之和

核心实现思路:使用暴力枚举或哈希表实现。参考连接:https://leetcode.cn/problems/two-sum/solution/liang-shu-zhi-he-by-leetcode-solution/

10.最长回文子串

核心实现思路:贪心算法。参考连接:https://leetcode.cn/problems/longest-palindrome/solution/zui-chang-hui-wen-chuan-by-leetcode-solution/

11.二叉树最近公共祖先

核心实现思路:遍历。参考连接:https://leetcode.cn/problems/er-cha-sou-suo-shu-de-zui-jin-gong-gong-zu-xian-lcof/solution/er-cha-sou-suo-shu-de-zui-jin-gong-gong-0wpw1/

二、较常见手撕代码题

  1. 判断回文字符串:https://leetcode.cn/problems/valid-palindrome/solution/yan-zheng-hui-wen-chuan-by-leetcode-solution/
  2. 两个字符串的最大公共子字符串:https://leetcode.cn/problems/maximum-repeating-substring/solution/zui-da-zhong-fu-zi-zi-fu-chuan-by-leetco-r4cp/
  3. 有序链表转换二叉搜索树(快手):https://leetcode.cn/problems/convert-sorted-list-to-binary-search-tree/solution/you-xu-lian-biao-zhuan-huan-er-cha-sou-suo-shu-1-3/
  4. 两个栈实现队列(字节):https://leetcode.cn/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/solution/mian-shi-ti-09-yong-liang-ge-zhan-shi-xian-dui-l-3/
  5. 三个线程交替打印ABC(蔚来):https://interview/code/weilai_thread.html
  6. 二分查找(阿里巴巴):https://leetcode.cn/problems/binary-search/solution/er-fen-cha-zhao-by-leetcode-solution-f0xw/

最后

大家觉得在面试中,还遇到了哪些常见的手撕代码题呢?欢迎在评论区讨论和补充。


作者介绍

王磊(人称磊哥),13 年一线编程工作经验,3 年授课经验,曾就职于 360,资深技术博主。

曾担任某思教育和某谷电商的研发经理和技术负责人。

Java 技术传播者,博客总阅读量近 300 万次,博客成就:腾讯云年年度最佳作者/掘金社区优秀作者/拉勾专栏作者/GitChat(CSDN 旗下)畅销作家/慕课讲师/阿里云社区技术专家等,发布了 6 个技术专栏,分别是拉勾平台的《Java大厂真题与源码34讲》,GitChat 平台的《Java 面试全解析:核心知识点与典型面试题》《程序员的 MySQL 面试金典》《Redis 核心原理与实战》《程序员的 Redis 面试金典》,慕课网的《设计模式深度解析34讲》等。

我的 Java 训练营

由磊哥亲自带队的 Java 训练营开营了,提供的主要服务有:

  1. 一对一问题答疑:提供语音 + 远程调试的服务,帮你解决技术疑难问题。
  2. 面试辅导:简历辅导 + N 次模拟面试定位你的知识盲区,制定私人学习计划。
  3. 项目辅导:提供项目实现视频加项目源码,帮助你打造属于私人的非烂大街的项目,并提供项目面试辅导,教你在面试中搞定项目问题。
  4. 原创资料和面试视频课程:原创技术资料和 140+ 集原创面试视频。

训练营服务内容

  1. 简历辅导:不限次数。
  2. 模拟面试和知识补漏:每周一次的模拟面试和知识点补漏。
  3. 一对一技术答疑:语音解答 + 远程调试。
  4. 原创资料和面试课程:原创技术资料和 140+ 集原创面试视频。
  5. 面试真题:应聘公司面试真题 + 部分题解。
  6. 大厂直推:老学员直推。
  7. 制定一对一学习计划和监督服务:每日学习打卡督促。
  8. 面试复盘:分析面试中的问题和改善方案。
  9. 校招最新招聘信息分享:校招期间为学员提供最新招聘信息,以及好拿 offer 的公司信息同步。
  10. 公司历年薪资及谈薪建议:助你拿到最优工资。
  11. Offer 选择和职业规划:公司黑名单库帮你避坑。

也就是说,你只管学习,其他的我都帮你搞定

以上所有服务都是磊哥本人,一个有十几年工作经验的老程序员。

如何收费?

因为提供的是永久性的一对一答疑 + 一对一校招辅导服务,所以收费是 5000 元/人,大学生提供分期。

如何报名?

添加微信:gg_stone,备注【训练营】,不然不予通过。同时欢迎各位同学加我微信咨询哦~

good-icon 0
favorite-icon 0
收藏
回复数量: 0
    暂无评论~~
    Ctrl+Enter