📜  思杰研发面试经历(1)

📅  最后修改于: 2023-12-03 15:25:39.853000             🧑  作者: Mango

思杰研发面试经历

背景

思杰研发是一家专门从事软件开发和技术咨询的公司,总部位于深圳,在北京、上海等地都设有分支机构。公司致力于提供全方位的软件开发和IT咨询服务。

面试流程

我的思杰研发面试经历分为三个环节:电话面试、在线测试、现场面试。以下是详细的流程介绍:

电话面试

电话面试是初步筛选的重要环节。思杰研发主要从以下几个技能领域进行考核:

  • 编程基础:涵盖数据结构、算法等领域基础知识;
  • 语言熟练度:主要是针对所熟悉的编程语言的掌握程度;
  • 项目经验:询问过去所从事的项目,以及在其中担任的角色以及问题解决能力;
  • 沟通能力:主要涉及英语水平,以及在问题沟通和解决方案讨论中表现的能力。
在线测试

如果通过了电话面试,将进入在线测试环节。对于软件工程师来说,在线测试主要涵盖以下几个方面:

  • 编程能力:如何解决一些基本但有挑战性的算法和数据结构题目;
  • 代码阅读能力:阅读一些代码,从其中挖掘出问题点,并提出解决方案;
  • 关注细节:在给定的代码中寻找细节问题并解决它们。

整个在线测试约3小时,受到时间限制以及一些在线因素,还需要一定的心理素质。

在线测试参考例题:LeetCode题库

leetcode 26. Remove Duplicates from Sorted Array

Given a sorted array nums, remove the duplicates in-place such that each element appear only once and return the new length.
Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.

Example 1:

Given nums = [1,1,2],
Your function should return length = 2, with the first two elements of nums being 1 and 2 respectively.
It doesn't matter what you leave beyond the returned length.

Example 2:

Given nums = [0,0,1,1,1,2,2,3,3,4],
Your function should return length = 5, with the first five elements of nums being modified to 0, 1, 2, 3, and 4 respectively.
It doesn't matter what values are set beyond the returned length.

Clarification:

Confused why the returned value is an integer but your answer is an array?
Note that the input array is passed in by reference, which means modification to the input array will be known to the caller as well.

Internally you can think of this:

// nums is passed in by reference. (i.e., without making a copy)
int len = removeDuplicates(nums);

// any modification to nums in your function would be known by the caller.
// using the length returned by your function, it prints the first len elements.
for (int i = 0; i < len; i++) {
    print(nums[i]);
}

Constraints:

0 <= nums.length <= 3 * 10^4
-10^4 <= nums[i] <= 10^4
nums is sorted in ascending order.
现场面试

通过在线测试之后,会进入最后一个环节:现场面试。整个过程分为两个部分:技术面试和项目面试。这个环节主要考核我的编程能力、沟通技巧以及团队协作能力。

技术面试主要涉及以下几个方面:

  • 数据结构与算法:包括链表、栈、队列、二叉树、排序算法等;
  • 编程语言:主要考察所会掌握的编程语言,如Java、Python、C++等;
  • 设计模式:从代码的角度考虑如何使用设计模式来提高代码质量;
  • 数据库:涉及数据库的使用及优化技巧。

项目面试主要涉及我的项目经历以及认知能力。我提前准备了项目PPT及代码,面试官主要关注以下方面:

  • 技术成果:从技术角度考虑项目的贡献、所使用的技术和解决了哪些问题;
  • 项目管理:项目实施中遇到的问题以及解决方法;
  • 个人能力:在项目实施中所扮演的角色,以及表现如何。
总结

整个思杰研发面试过程非常严格、科学,全程考察的各个方面都比较充分。初步考察后进行在线测试,对个人的能力提出了更严格的考核要求。如果能够通过这三个环节,相信我的社会认知能力、团队合作能力等方面都能得到充分的发挥。