PLCT-ready

171 阅读6分钟

工具

  • C/C++/Java

    • 知道
    • 基本的 函数调用概念
    • 如何将源代码编译运行起来
    • 可以写出来一个数组的 读入、排序、 按照 格式 输出的程序。)
    • 熟练使用一门以上编程语言,bash/python脚本语言
    • 一般是 C/C++/Java + Python/Ruby/Bash;
      • 例如C++要求熟练C++11及以上。
        • 使用 C/C++/Java 中的一种语言完成开发任务,
    • 在 mentor 指导下进行一周以内的
    • 代码开发和测试。
    • 熟练的阅读C++代码
    • 具备C++入门级开发能力,
  • Python/Bash 脚本编程

    • 给了一段脚本之后,
    • 能自己 Google
    • 完全弄懂脚本的意思。)
    • 使用 Python/Bash/JS
    • 中的某种语言
    • 熟练完成数据处理的任务。
  • 知道并使用过 make、cmake 等构建脚本工具,

    • 会看懂和修改 Makefile,
    • 能够搞定简单的 CMake 配置问题。
    • 能够看懂 Makefile。
  • Linux 的使用经验。

    • 使用命令行的经验。
    • 常用的 grep find date sed tr head 等都需要熟悉。)
  • 会使用基本 git 和 GitHub/gitlab。

    • clone commit push branch merge
    • GitHub操作是指
      • 发起 PR/MR,
      • 更新PR/MR,
      • 跟多个 remote 进行同步。)
  • 熟练使用 Linux 命令行工具,

    • 包括 find、grep、sed 等,
    • 熟练使用不同小工具的参数和组合完成日常的任务。
  • 能够熟练使用 git,

    • 并且具备良好的小组 git 开发的技能
    • (不是要求经验,是要求技能,
    • 仔细学习过 Pro Git 或类似的书)
  • 自己进行软件调试,

  • 调试自己的代码。

    • 会使用 gdb 的同学加分。

基础知识

  • 学过《编译原理》,或者看过吴伟老师的《编译技术入门与实战》课程,参考链接:
https://www.bilibili.com/video/av78503049
    • 数据结构、
    • 算法导论、
    • 计算机组成原理/微机原理/计算机体系结构、
    • 现代数据库原理
      • 有比较系统的了解,学习过,能够快速的复习和掌握。
    • 编译原理、
    • 计算机网络、
    • 现代操作系统
      • 三门课程的知识,要有比较好的理解和记忆。
  • 基本 Office 软件操作能力;

    • 能够在组内进行技术报告。
    • (新实习生每周三的周例会上会要求进行报告。)
  • 可以在mentor指导下

    • 完成函数级别的功能的开发,
    • 能够自己阅读代码,
    • 理解局部代码逻辑。
  • 在指导下完成

    • 项目的测试、
    • 实验数据的收集和清洗、
    • 文档报告的撰写等内容。
  • 独立承担一周以上长度的

    • 代码开发工作。
  • 独立的分析

    • 遇到的bug或crash,
    • 具备较强的测试、调试、分析查错的能力。
      • (这是LV3的准入门槛)
  • 快速理解任务内涵

    • 并在mentor少量辅助下找到解决方法,完成任务。
  • 熟练阅读英文技术资料。

  • 能够熟练的进行公开的技术报告。

  • 独立承担

    • 模块级别开发类工作,能够
    • 快速学习新领域知识。
  • 对于LLVM等大型软件系统,

    • 能够独立地完成
    • 调试、
    • 分析查错,
    • 找到问题根源并修复,
    • 确保开发任务的按时推进。
  • 指导LV3以下伙伴,辅助伙伴完成开发任务。

  • 独立做技术报告和分享。

  • 察觉和指出LV4及其以上的错误、知识的盲区,并且纠正出现的错误。

  • 根据需要,独立的从0到1的为团队开辟一个新的知识领域,通过调研报告、技术分享、扩展开发等途径撑起一个细分的技术方向。

  • 有能力独立分析和分解问题,整合各种资源完成任务。

  • 指导LV4及以下伙伴,

    • 能够独立领导开发团队并保证交付。
  • 应对各类突发情况,

    • 并代表团队与mentor沟通。
  • 具备了可以领导一个开发小组的能力。

面试结束,面试官放下电话,直呼,这个人怎么这么菜。

第一次面试面试软件所PLCT实验室,申请职位:Clang/LLVM 开发实习生/OpenJDK for RISC-V 开发实习生/RISC-V公开课教学助理(助教)

面试经过

​ 首先自我介绍,如何关注到PLCT的,怎么知道的招聘信息等等

​ 然后就是技术部分:

  • JVM:

    1. JVM结构:

      回答:分为三部分,类加载子系统、运行时数据区、执行引擎。

    2. 执行引擎又怎么分:

      回答:解释器、GC、还有即时编译器(JIT)

      反思:首先是没想起来即时编译器想的是里面的分析器,后来才补上即时编译器的名字,还把英文缩写说成JIN了

    JVM部分结束,反思:

    没有把面试官引导到我比较了解的类加载子系统,下次可以说我学习的流程是按照类加载子系统,运行时数据区,执行引擎这样的顺序,类加载子系统印象比较深刻。 ,这样说不定还可以多说点。

  • Linux:

    1. 平常linux用的多吗?

      回答:用的比较多,我把我的实验环境和博客都部署在上面。之前还拿来学操作系统,觉得linux比较友好

      反思:然后我因为最后一句话就突然给自己跳转了副本,跳转到操作系统副本。

  • 操作系统:

    1. 操作系统做过哪些实验?

      回答:做过内存分配,线程调度什么的

      反思:忘了!!!好久以前的了,全忘了,我为什么要开操作系统的副本。我忘了说还有内存整理合并

    2. 内存分配有哪些机制:

      回答:FIFO, LRU (叽里呱啦没解释清), 轮转调度

      反思:这就拉胯开始了,几乎全忘了。LRU都说不清,解释了半天我自己都听不懂。

  • 计算机网络:

    1. HTTP UDP TCP IP各在哪一个分层?

      回答:(不说了反正回答全错)

      反思: 这里我真的,全忘了,面试之前忘了看,答得乱七八糟,最拉胯。

  • 结束

    评价:基础一般,勉勉强强。

反思:一上来自我介绍我就紧张,感觉那时候根本不是我。说了半天说不到点上,然后还是因为紧张,好多东西都忘了(计网的知识忘了不是因为紧张)。没有很好的引导面试。没有往我会的地方引导。反而开了高难度副本。

作者:Oliverrrr
链接:juejin.cn/post/691115…
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。