互联网就业技术指南

GO语言面试系列:(七)如果你是一个Golang面试官,你会问哪

2018-11-06  本文已影响137人  Chole121

这篇文章翻译自一位外国友人的关于面试后端程序员的文章,我比较喜爱这篇文章。一是因为它极大的拓宽了我的视角,另一方面是其中的一些问题非常具有启发性。不仅对于面试者,对于面试官来说也是个不错的参考。于是迫不及待的翻译了一下,给各位看官做个参考。

原文参见 @arialdomartini的: Back-End Developer Interview Questions

以下是原文翻译。

  1. 通用问题
  2. 开放式问题
  3. 设计模式相关问题
  4. 代码设计相关问题
  5. 语言相关问题
  6. Web相关问题
  7. 数据库相关问题
  8. 非关系型数据库相关问题
  9. 代码版本管理相关问题
  10. 并发问题
  11. 分布式系统相关问题
  12. 软件生命周期和团队管理相关问题
  13. 逻辑和算法相关问题
  14. 软件架构相关问题
  15. 面向服务架构(SOA)和微服务(Microservice)相关问题
  16. 安全相关问题
  17. 比尔盖茨式问题
  18. 代码示例问题

通用问题:

开放式问题:

(注: 重复造轮子: Reinventing the wheel; 非我发明症:Not Invented Here Syndrome; 吃自己做出来的狗粮: Eating Your Own Dog Food)

设计模式相关问题:

(注: 迪米特法则:the Law of Demeter, 最少知识原则: the Principle of Least Knowledge)

译者注: “发送时要保守,接收时要开发”的原文是: “Be conservative in what you send, be liberal in what you accept”,有点类似于“严于律己,宽于待人”的意味。

代码设计相关问题:

语言相关问题:

web相关问题:

数据库相关问题:

非关系型数据库相关问题:

代码版本管理相关问题:

(注:集中式版本控制系统: Centralized Version Control Systems;分散式版本控制系统: Distributed Version Control Systems)

并发问题:

分布式系统相关问题:

软件生命周期和团队管理相关问题:

逻辑和算法相关问题:

软件架构相关问题:

面向服务架构(SOA)和微服务(Microservice)相关问题:

安全相关问题:

比尔盖茨式问题:

代码示例问题:

function hookupevents() {
  for (var i = 0; i < 3; i++) {
    document.getElementById("button" + i)
      .addEventListener("click", function() { 
        alert(i); 
      });
  }
}

ArrayList<Integer> li = new ArrayList<Integer>();
ArrayList<Float> lf = new ArrayList<Float>();
if (li.getClass() == lf.getClass()) // evaluates to true
  System.out.println("Equal");

public class Stack {
    private Object[] elements;
    private int size = 0;
    private static final int DEFAULT_INITIAL_CAPACITY = 16;

    public Stack() {
        elements = new Object[DEFAULT_INITIAL_CAPACITY];
    }

    public void push(Object e) {
        ensureCapacity();
        elements[size++] = e;
    }

    public Object pop() {
        if (size == 0)
            throw new EmptyStackException();
        return elements[--size];
    }

    /**
     * Ensure space for at least one more element, roughly
     * doubling the capacity each time the array needs to grow.
     */
    private void ensureCapacity() {
        if (elements.length == size)
            elements = Arrays.copyOf(elements, 2 * size + 1);
    }
}

public class Formatter {

    private Service service;

    public Formatter(Service service) {
        this.service = service;
    }

    public String doTheJob(String theInput) {
        String response = service.askForPermission();
        switch (response) {
        case "FAIL":
            return "error";
        case "OK":
            return String.format("%s%s", theInput, theInput);
        default:
            return null;
        }
    }
}

public class TheService {
    private final FileHandler fileHandler;
    private final FooRepository fooRepository;

    public TheService(FileHandler fileHandler, FooRepository fooRepository) {
        this.fileHandler = fileHandler;
        this.fooRepository = fooRepository;
    }

    public String Execute(final String file) {

        final String rewrittenUrl = fileHandler.getXmlFileFromFileName(file);
        final String executionId = fileHandler.getExecutionIdFromFileName(file);

        if ((executionId == "") || (rewrittenUrl == "")) {
            return "";
        }

        Foo knownFoo = fooRepository.getFooByXmlFileName(rewrittenUrl);

        if (knownFoo == null) {
            return "";
        }

        return knownFoo.DoThat(file);
    }
}

function()
{
    HRESULT error = S_OK;

    if(SUCCEEDED(Operation1()))
    {
        if(SUCCEEDED(Operation2()))
        {
            if(SUCCEEDED(Operation3()))
            {
                if(SUCCEEDED(Operation4()))
                {
                }
                else
                {
                    error = OPERATION4FAILED;
                }
            }
            else
            {
                error = OPERATION3FAILED;
            }
        }
        else
        {
            error = OPERATION2FAILED;
        }
    }
    else
    {
        error = OPERATION1FAILED;
    }

    return error;
}

作者:王爵nice
链接:https://www.zhihu.com/question/67846139/answer/257359743
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

添加小编微信:grey0805,加入知识分享小分队,别掉队哦!

上一篇 下一篇

猜你喜欢

热点阅读