前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >不敢相信,字节二面问的这么简单?

不敢相信,字节二面问的这么简单?

作者头像
千羽
发布2023-12-14 16:30:15
1430
发布2023-12-14 16:30:15
举报
文章被收录于专栏:程序员千羽程序员千羽

哈喽~,大家好,我是千羽。

下面分享我认识的一位24届大佬华中科技大学985硕,字节二面。

问了常规基础和面试题,总体上不难。


  • 1、如何使用MyISAM引擎(建表时指定engine为MyISAM)
  • 2、Linux下如何查找CPU占用率最高的进程(top指令)
  • 3、编程题:实现带有TTL的LRUCache(太简单了)

1、如何使用MyISAM引擎(建表时指定engine为MyISAM)

使用MyISAM引擎建表需要指定engine为MyISAM。以下是使用MyISAM引擎建表的一般步骤:

  1. 打开MySQL命令行客户端或MySQL管理工具,连接到相应的数据库。
  2. 创建表时,使用CREATE TABLE语句并指定engine为MyISAM。例如:
代码语言:javascript
复制
CREATE TABLE my_table (  
  id INT(11) NOT NULL AUTO_INCREMENT,  
  name VARCHAR(50) NOT NULL,  
  age INT(11),  
  PRIMARY KEY (id)  
) ENGINE=MyISAM;

在上述示例中,创建了一个名为"my_table"的表,包含id、name和age字段。id字段为主键,engine为MyISAM。

  1. 创建完表后,可以使用SHOW CREATE TABLE语句查看表的详细信息,包括所使用的引擎。例如:
代码语言:javascript
复制
SHOW CREATE TABLE my_table;

这将显示包含表的所有详细信息的查询结果,包括engine为MyISAM。

请注意,使用MyISAM引擎的表不支持事务和外键约束。此外,MyISAM表在系统发生崩溃时可能会导致数据损坏,因此需要定期备份数据。在使用MyISAM引擎时,建议对表进行优化以提高性能,例如使用OPTIMIZE TABLE语句。

2、Linux下如何查找CPU占用率最高的进程(top指令)

在Linux下,可以使用top命令来查找CPU占用率最高的进程。top命令会实时显示系统中各个进程的资源占用状况,并按照CPU占用率的高低进行排序。

要使用top命令,请按照以下步骤操作:

  1. 打开终端(Terminal)。
  2. 在终端中输入以下命令:top

然后按回车键。

这会启动top命令,并显示系统中各个进程的CPU占用率等信息。

top命令的界面中,你会看到各个进程按照CPU占用率的高低排列。默认情况下,top命令会按照CPU占用率排序,占用CPU资源最多的进程会排在最前面。

你可以使用键盘上的方向键来浏览不同的进程列表,按下q键退出top命令。

如果你想在top命令中查看其他资源的使用情况,可以使用以下命令:

  • 要查看内存使用情况,按下M键。
  • 要查看交换空间使用情况,按下S键。
  • 要查看磁盘I/O情况,按下D键。

3、编程题:实现带有TTL的LRUCache(太简单了)

在Java中实现带有TTL(Time To Live)的LRU(Least Recently Used)缓存,我们可以使用Java标准库中的LinkedHashMapLinkedHashMap 是一个带有链接和排序的散列映射,它同时具有LRU和时间戳特性。下面是一个简单的实现:

代码语言:javascript
复制
import java.util.LinkedHashMap;  
import java.util.Map;  
import java.util.concurrent.TimeUnit;  
  
public class LRUCacheWithTTL<K, V> {  
    private final int capacity;  
    private final long ttl;  
    private final Map<K, ValueHolder<V>> cache;  
  
    public LRUCacheWithTTL(int capacity, long ttl) {  
        this.capacity = capacity;  
        this.ttl = ttl;  
        this.cache = new LinkedHashMap<>(capacity, 0.75f, true) {  
            protected boolean removeEldestEntry(Map.Entry<K, ValueHolder<V>> eldest) {  
                if (size() > capacity) {  
                    expireOldestEntry();  
                    return true;  
                } else {  
                    return false;  
                }  
            }  
        };  
    }  
  
    public synchronized V get(K key) {  
        ValueHolder<V> valueHolder = cache.get(key);  
        if (valueHolder == null) {  
            return null;  
        } else {  
            valueHolder.touch();  
            return valueHolder.getValue();  
        }  
    }  
  
    public synchronized void put(K key, V value) {  
        if (cache.containsKey(key)) {  
            cache.get(key).setValue(value);  
        } else {  
            ValueHolder<V> valueHolder = new ValueHolder<>(value, System.currentTimeMillis());  
            cache.put(key, valueHolder);  
            expireOldestEntry();  
        }  
    }  
  
    private void expireOldestEntry() {  
        ValueHolder<V> eldest = null;  
        long now = System.currentTimeMillis();  
        for (ValueHolder<V> valueHolder : cache.values()) {  
            if (eldest == null || valueHolder.getTimestamp() < eldest.getTimestamp()) {  
                eldest = valueHolder;  
            }  
        }  
        if (eldest != null && now - eldest.getTimestamp() > ttl) {  
            cache.remove(eldest.getKey());  
        }  
    }  
}

这里我们定义了一个内部类ValueHolder来保存值和时间戳:

代码语言:javascript
复制
public class ValueHolder<V> {  
    private V value;  
    private long timestamp;  
  
    public ValueHolder(V value, long timestamp) {  
        this.value = value;  
        this.timestamp = timestamp;  
    }  
  
    public V getValue() {  
        return value;  
    }  
  
    public void setValue(V value) {  
        this.value = value;  
    }  
  
    public long getTimestamp() {  
        return timestamp;  
    }  
}
  • 原文链接:https://github.com/warthecatalyst/What-to-in-Graduate-School/blob/main/%E7%A7%8B%E6%8B%9B%E7%9A%84%E9%9D%A2%E7%BB%8F/%E5%8D%8E%E7%A7%91%E8%AE%A1%E7%A7%91%E7%AC%AC%E4%BA%8C%E4%BA%BA%E7%9A%84%E7%A7%8B%E6%8B%9B%E6%8A%A5%E5%91%8A.md
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-12-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 千羽的编程时光 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、如何使用MyISAM引擎(建表时指定engine为MyISAM)
  • 2、Linux下如何查找CPU占用率最高的进程(top指令)
  • 3、编程题:实现带有TTL的LRUCache(太简单了)
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档