最右一面,凉透了的经

面试八股环节还好,但是我是力扣战士,面试官让在编译器上写代码
类都不会怎么写了,两个算法,字母异位词和策略模式,只写了方法,力扣战士凉透了,希望大家平时还是要在编译器上做题
策略模式等一些设计模式,希望大家也进行默写,别像我一样会背不会写
字母异位词
import java.util.*;

public class Main {
    public static List<List<String>> groupAnagrams(String[] strs) {
        // 用于存储分组结果的映射,键为排序后的字符串,值为对应的字符串列表
        Map<String, List<String>> anagramGroups = new HashMap<>();
        
        for (String s : strs) {
            // 将字符串转换为字符数组并排序
            char[] chars = s.toCharArray();
            Arrays.sort(chars);
            String sortedStr = new String(chars);
            
            // 如果映射中不存在该键,则创建一个新的列表
            anagramGroups.computeIfAbsent(sortedStr, k -> new ArrayList<>());
            // 将当前字符串添加到对应的列表中
            anagramGroups.get(sortedStr).add(s);
        }
        
        // 返回映射中的所有值(即所有分组)
        return new ArrayList<>(anagramGroups.values());
    }

    public static void main(String[] args) {
        // 示例输入
        String[] strs = {"eat", "tea", "tan", "ate", "nat", "bat"};
        // 调用方法获取分组结果
        List<List<String>> result = groupAnagrams(strs);
        
        // 输出结果
        for (List<String> group : result) {
            System.out.println(group);
        }
    }
}
策略模式
// 支付策略接口
interface PaymentStrategy {
    void pay(double amount);
}

// 微信支付实现
class WechatPay implements PaymentStrategy {
    @Override
    public void pay(double amount) {
        System.out.println("使用微信支付:" + amount + "元");
        // 微信支付具体实现逻辑
    }
}

// 支付宝实现
class Alipay implements PaymentStrategy {
    @Override
    public void pay(double amount) {
        System.out.println("使用支付宝支付:" + amount + "元");
        // 支付宝支付具体实现逻辑
    }
}

// 银行卡支付实现
class BankCardPay implements PaymentStrategy {
    @Override
    public void pay(double amount) {
        System.out.println("使用银行卡支付:" + amount + "元");
        // 银行卡支付具体实现逻辑
    }
}

// 支付上下文(策略持有者)
class PaymentContext {
    private PaymentStrategy strategy;

    public PaymentContext(PaymentStrategy strategy) {
        this.strategy = strategy;
    }

    public void setStrategy(PaymentStrategy strategy) {
        this.strategy = strategy;
    }

    public void executePayment(double amount) {
        strategy.pay(amount);
    }
}

// 主类和测试代码
public class Main {
    public static void main(String[] args) {
        // 创建支付上下文
        PaymentContext context = new PaymentContext(new WechatPay());
        
        // 使用微信支付
        context.executePayment(100.0);
        
        // 切换为支付宝支付
        context.setStrategy(new Alipay());
        context.executePayment(200.0);
        
        // 切换为银行卡支付
        context.setStrategy(new BankCardPay());
        context.executePayment(300.0);
    }
}
全部评论
是秋招嘛
点赞 回复 分享
发布于 07-29 16:41 辽宁
最右的手撕是不是都很男啊我当时面暑期实习手撕是实现计算器
点赞 回复 分享
发布于 07-29 12:19 贵州
代码的尽头是英文吗
点赞 回复 分享
发布于 07-28 17:26 辽宁

相关推荐

最近是各位大佬离职回去准备秋招了嘛,鼠鼠最近投的实习居然都有回应了,基本上当天投的两天之内都能有回应,要是秋招能有这样就太好了呜呜,简单记录一下吧。7月23日:快手-平台消费(一面)1.实习介绍(干了什么,亮点,难点)2.一些基础八股(集合,MySQL……)3算法(二叉树前序遍历非递归),突然忘了要求换了个,直接给我出了个反转链表(面试官真好)&nbsp;50minute7月25日:百度-后台开发(一面)1.介绍实习(针对简历上写的亮点挨个问)(这么玩嘛)2八股拷打,不断反问3先写个算法吧(二叉树最长路径长度)4问项目(简单介绍了下)&nbsp;1h7月25日:快手-平台消费(二面)1.谈了下实习时间,到岗时间啥的2.操作系统(线程进程区别,通信方式,使用细节)3Java八股,jvm,集合……4算法(倒数第k个最大元素)50分钟7月28日:&nbsp;小红书-数据库平台开发(一面)1.介绍实习(为啥要这样做,达到的效果咋样……)2.八股文(记不太清了)3.介绍项目,(详细介绍了一遍)4算法(长度最小子数组,两数相加)50分钟7月28日:&nbsp;字节跳动-生活服务(一面)1.介绍实习(介绍部门组内情况,你怎么优化的,之前是咋样的呢,怎么保证不会出现问题……汗流浃背了)2.按照简历上的点穿插八股文,Redis底层数据结构实现,集群方案,切片集群,如何扩容,Redis分布式锁……,给出了两个sql问有什么问题,给出优化方案并写出来,有一个是深分页问题3.算法(子集2)1小时10分钟7月29日:&nbsp;小红书-二面-数据库平台开发(二面)1.算法(最长递增子序列,二叉树展开为链表)2.计网,操作系统3Java八股文4实习介绍50分钟然后7月31还有个猫眼娱乐-后台开发(一面)
查看20道真题和解析
点赞 评论 收藏
分享
07-30 20:16
南京大学 Java
点赞 评论 收藏
分享
评论
2
5
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务