秋招开发面试存档

plus2047 于 2020-03-01 发布

存档在几次秋招开发面试中遇到的问题。


C++ 智能指针

简而言之,推荐使用的智能指针有 unique_ptr, shared_ptr, weak_ptr. auto_ptr 已经被废弃。

unique_ptr 代表独占引用,被 unique_ptr 引用的对象具有跟指针一致的生命周期。在 unique_ptr 离开作用域时,被引用的对象被释放。unique_ptr 可以移动不能拷贝。

shared_ptr 就是我们通常理解的引用计数智能指针。weak_ptr 是配合 shared_ptr 使用的弱引用,不会增加引用计数。

参考文章

Java 线程之间资源隔离

我两次被问到这个知识点,说明这个知识点并不生僻,需要准备。

Java 线程之间的隔离指的应该是 ThreadLocal, 相对于类的 static 字段,ThreadLocal 字段在不同的线程中会读到不同的实例:

class MyClass {
    public static String allThreadsGetTheSameObject;
    public static ThreadLocal<String> differentObjectForEachThread;
}

这个类的实现也非常简单。ThreadLocal 实例可以访问一个 Map, 该 Map 是 Thread 实例的一个字段。从该 Map 中根据该对象的指针查询具体实例。

逻辑上相当于利用线程号和对象指针两个 Key 查询实例,需要一次散列表查找过程。

阿里云面试订正

Redis