How Effective are Technical Interviews?

Pulse, the startup I work at, is looking to hire a few more developers, and so I’ve recently been thinking a lot about the hiring process and my own experiences with interviews.

The worst interview I ever had was a phone screen for an internship, during which two interviewers spewed Java trivia one-liners at me on their speakerphone. At first I felt pretty bad because I wasn’t that experienced in Java at that point, and felt that I had done pretty poorly in the interview.  I later reasoned that I wouldn’t want to intern at a company that didn’t probe more deeply into how I tackled problems anyways.  That is the extreme end of technical interviews, but I’ve always wondered how effective technical interviews are at selecting the right people for the job.  My suspicion is that people who do well in interviews are generally fine, but that technical interviews may weed out candidates that don’t interview well but would actually do a good job.

I think of technical interviews as the kind where you go into a room with an interviewer and solve problems on the whiteboard for an hour.  Rinse and repeat 4-8 times in one day, depending on the company and type of job.  For those of you who feel calm and collected and confident during such interviews, I admire you. During the first few interviews I had for internships, I remember being so nervous that I couldn’t really think straight. My mind would sort of blank, and then think “oh shit, I need to solve this problem, think think think.” Mentally telling yourself to think while some guy stares at you is pretty freaking stressful, and it’s definitely not too conducive to problem-solving.

Stress issues aside, do technical interview problems map directly to on-the-job work? Many technical interviews are very theory-heavy, muddling the divide between Computer Science and Software Engineering.  I don’t claim to be any sort of expert on interviews and hiring, but it seems to me that a typical interview also isn’t a great indication of how well candidates will work in a team, their coding style, how passionate they are about the company, and their work ethic.

A few months ago, I had some really positive experiences with hiring processes that I believe give candidates more opportunities to showcase their skills, while giving companies more useful and relevant feedback.

The first one that really stood out to me was at a local startup.  First, I met with someone from the company for coffee to learn a bit more about the company.  I was then given a coding challenge in the form of written specs for a small Android app, which I coded up in a few hours and sent back to them.  They looked it over and brought me in for interviews, during which they asked me about my general design for the Android app.  I was also asked more conventional technical questions and coded up solutions on the whiteboard, but it was well-complemented by the coding challenge.  As a candidate, I felt that this gave me a good opportunity to showcase some of the skills that would not necessarily come across in an on-site interview, such as good coding style and design.

The other really positive hiring process I went through was at Pulse, where I ended up.  I met with the engineering team (3 people) for lunch one day, and then worked onsite on some small projects for the next week.  I was able to jump right into the codebase and show the team what I could do (I was also paid for the week), and when I accepted a full-time offer, I already knew how exciting and fulfilling my new job would be.  A friend recently commented that finding the right startup is just like finding the right relationship.  A “trial period” (maybe analogous to dating?) gives both the candidate and the existing team the opportunity to test the waters and see if the relationship is a good fit.

Both these types of processes allow the candidate to write some not-too-trivial code at his or her own pace. For software engineers who are already experienced in the job-specific platform, their expertise will shine through.  For smart people who are less experienced, they have the opportunity to show that they can learn quickly and get stuff done, without having to worry about getting tripped up on syntax in an on-site interview.  With the growing number of startups and companies hiring developers in Silicon Valley, and the dearth of available candidates with the “required years of experience,” this type of hiring might be an effective way to hire “outside of the box.”

I haven’t had too much interviewing experience (on either end), so I’m not sure how uncommon these hiring strategies are.  For larger companies, they may not even be logistically possible. Has anyone else gone through a process that was different from the more conventional technical interviews? For those of you who have more experience interviewing candidates, how effective are the hour-long technical interviews?

转载于:https://my.oschina.net/wdliming/blog/35877

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然可以,以下是一个使用堆来实现贪心算法的Python代码示例: ```python import heapq # 定义每个面试场每分钟能够面试的人数 INTERVIEW_RATE = [0.041322314, 0.034188034, 0.076923077, 0.039370079, 0.042918455, 0.05952381, 0.049261084, 0.042735043, 0.02754821, 0.03021148] # 定义面试场的时间 INTERVIEW_TIME = [24.2, 29.3, 13.0, 25.4, 23.3, 16.8, 20.3, 23.4, 36.3, 33.1] # 定义每个面试场的最大容量 INTERVIEW_CAPACITY = 5 # 定义每个学生的面试时间 INTERVIEW_DURATION = 10 # 定义学生列表 students = [i for i in range(102)] # 定义每个面试场的剩余时间和学生列表 interviews = [(INTERVIEW_TIME[i], []) for i in range(10)] # 将面试场按照每分钟面试人数从大到小排序 heapq.heapify(interviews, key=lambda x: -INTERVIEW_RATE[x[0]]) # 遍历每个学生,依次将其分配到空闲的面试场中 for student in students: # 找到剩余时间最短的面试场 interview = heapq.heappop(interviews) duration, students_assigned = interview # 如果当前面试场已满,需要重新分配 if len(students_assigned) == INTERVIEW_CAPACITY: heapq.heappush(interviews, interview) interview = heapq.heappop(interviews) duration, students_assigned = interview # 将学生分配到当前面试场中 students_assigned.append(student) # 更新当前面试场的剩余时间 remaining_time = duration - len(students_assigned) * INTERVIEW_DURATION heapq.heappush(interviews, (remaining_time, students_assigned)) # 输出每个面试场的面试进度 for i, interview in enumerate(interviews): duration, students_assigned = interview print(f"面试场{i+1}的面试进度为:{len(students_assigned)}/{INTERVIEW_CAPACITY}") ``` 运行以上代码,即可得到每个面试场的面试进度。需要注意的是,由于贪心算法并不一定能够得到全局最优解,因此得到的结果可能并不是最优的,但是在实际应用中,贪心算法通常能够得到一个比较好的解,并且具有较高的效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值