• Redo 重做一次的专业面试公司的视频电话面试 2019-Mar-03


    今天明显比上次答得好. 三道题, 45 分钟, 作对了两道半.  说明一个道理, 你就是要不断的进击, 不用等到 100% 准备好, 完全准备好的情况是不存在的.
     
    两分钟自我介绍, 10分钟项目经验, 谈自己有突出贡献的项目.
    (今天没有让选作 OOD, 操作系统, 测试, 前端 和 产品, 这些都是我的短板.  今天比较幸运)
     
    稍微介绍了一遍白板答题软件, https://coderpad.io 
    可以测试不熟悉的函数, 可以试运行, 打印中间结果 等等. 挺好用的, 我喜欢.
    ..
     

    下面就是今天的主食:

     
    输入, 是一个家族图谱.
        11
         
      1   7
     /  /
    3   5
       / 
      2   4

    parent_child_paires = [(1, 3), (1, 5), (7, 5), (5, 2), (5, 4), (11, 7)], 用二元 tuple 数组表示.

    Problem 1: 返回两个数组, 一个是没有儿子的全部节点, 一个是只有一个儿子的所有节点.
     
    Problem 2: 找两个节点有没有共同祖先, 返回 True or False. i.e. (1, 3) return False, (3, 4) return True, (2, 7) return True
          - 1, 3 不算, 必须是自己以外的父节点, 跟 LCA 的定义不同.
     
    Problem 3: 找到一个节点的最早的祖先. i.e. input = 2, return 11; input = 3, return 1
     

    心得:

    今天和考官的沟通到位, 一路畅谈, 确认题目的要求, 哪些边界情况需要处理, 中途想到的各种思路和逻辑, 偶然寻求考官的认可(或者否定).
    也可以征求提示, 在走不动的情况.
     
    令狐冲老师说了, 下面两种风格都可以:
     
    1. 开始确认题意, 简单描述思路, 然后闷头写代码, 跑测试, 最后做个总结, 简单走一遍代码逻辑, 说出时间和空间复杂度.
    2. 从头到尾不断的和考官交谈. 集中在 clarify problem, think out loud 表达自己的思路.  - 可能比较浪费时间.
     
    另外, 很多情况下,题目不需要高深的算法和数据结构, 简单的方法能做出来, 就先实现一个. 然后慢慢优化.
    比如今天的题目我首先就想到 Graph, BFS, 拓扑排序 等等, 然后才想到 hash map, Counter 等等, 通过沟通思路, 敏锐的察觉到根本没必要走高端.
     
    我是用 递归 Recursive 做的, 堆栈消耗更多空间和时间. BFS + 队列, 空间和时间都优于递归.
     

    努力, 坚持, 不断进击.

     
  • 相关阅读:
    Nginx有哪些作用?
    MYSQL如何优化?
    jdk1.8新特性
    [javase基础] JDK JRE JVM的区别?
    JDBC中如何进行事务处理?
    JDBC、ibatis(mybatis)、Hibernate有什么不同?
    java面试题最容易犯错
    Spring高频率面试题
    python pip whl安装和使用
    深入理解 Linux的进程,线程,PID,LWP,TID,TGID
  • 原文地址:https://www.cnblogs.com/goodwish/p/10468672.html
Copyright © 2020-2023  润新知