📅  最后修改于: 2023-12-03 15:11:37.467000             🧑  作者: Mango
这是一位有 2 年经验的程序员参加纳加罗公司的面试后的经历。
面试共分为三个环节:在线编程测试(Code Challenge)、技术面试(Technical Interview)和文化面试(Culture Interview)。
在线编程测试的主要目的是检验面试者的编程能力和理解算法的能力。面试者需要在规定时间内解决一个算法问题,并将自己的代码提交给面试官评估。
面试者遇到了一道关于链表的算法问题。面试者需要找到链表中的倒数第二个元素。
class Node:
def __init__(self, value=None, next=None):
self.value = value
self.next = next
def find_second_last(head):
if head is None or head.next is None:
return None
curr = head
while curr.next.next is not None:
curr = curr.next
return curr.value
技术面试的主要目的是检验面试者的技术能力和对工作机会的理解。面试官将会针对面试者的技术背景、工作经验、编码能力以及软技能进行提问。
在此次面试中,面试官提出了关于 RESTful 接口设计的问题,并要求面试者设计一套 RESTful 接口。
#### 设计一套 RESTful 接口
##### 用户管理
POST /users - 创建新用户
PUT /users/{id} - 更新指定用户信息
GET /users/{id} - 获取指定用户信息
GET /users - 获取用户列表
DELETE /users/{id} - 删除用户
##### 商品管理
POST /products - 创建新商品
PUT /products/{id} - 更新指定商品信息
GET /products/{id} - 获取指定商品信息
GET /products - 获取商品列表
DELETE /products/{id} - 删除商品
文化面试的主要目的是检验面试者与公司文化的匹配程度。面试者需要回答关于公司文化、工作态度、沟通技能等问题。
在文化面试中,面试官提出了关于团队合作的问题,并要求面试者分享一个自己处理团队冲突的经历。
面试者回答道,在之前的项目中,他们的团队遇到了一个需求上的分歧,一部分人认为应该按照客户的需求来实现,而另一部分人认为这会影响到整个系统的扩展性。面试者主动联系了客户,解释了这种实现方式可能会带来的问题,并提出了一些替代方案。最终,团队一致同意了面试者的方案。
这次面试经历让面试者意识到了算法和编码能力的重要性,并加深了对 RESTful 接口设计的理解。同时,面试者也更加了解公司的文化和价值观,对公司和工作有了更加清晰的认识。