Advertisement

浙江大华面试过程

阅读量:

去杭州是我的弟弟接的我,他在杭州理工读书。去的时候是下午,由于是做硬件的,有自己独立的大厦,去的时候不让弟弟进去,弟弟只能在保安接待外来的人的地方玩(PS:弟弟在里面睡觉了2个小时,感觉他陪我去面试真辛苦)。去的时候我推迟了几天,原本以为人不会太多,结果还是有很多人。一个HR实习生先让我填了一份表格,简单介绍自己的实习经历,部分人还有5年工作经验。面试时按照工作经验分组,做了3道简单算法题和3道面向对象思想+多线程的题目(这部分最难)。面试官指出我前面3道题思路清晰,结构合理,但后面3道题有很多问题。我回答说没有想那么多,以为实现就好了。面试官问是否想过写成模板或函数,我回答没有,因为没有在项目中使用过,写成函数我觉得不错。面试官还问我线程部分,我回答只在学校老师讲过,没在项目中使用过。面试官问我是否了解进程通信,我回答了解几种方式,但没用过。二面是总监面,问了加班和项目经验,我回答学过多线程但没用过。HR面谈了薪资和计划,最终决定不参加终面。
总结:语言基础不扎实,多线程和网络通信不熟悉,C++知识掌握不牢,服务端工作要求高。

去杭州是我弟弟接的我 他在杭州理工读书。

当下午时分,我去面试,因为是从事硬件相关业务的,拥有独立的大楼,结果不让弟弟进入。弟弟只能在保安室或类似的地方等待,结果在里面睡了整整两小时,感慨弟弟陪同我去面试。

去的时候,我将行程往后调整了数天,原本以为人流量不会太大,结果反而来了不少。一位HR实习生首先让我们填写了一份表格,并简要介绍了她的实习经历。此外,还有几位具有五年以上工作经验的求职者也参加了面试。根据应聘者的的工作经验与求职岗位,我们进行了相应的测试。测试内容不算太难,前3题是算法类题目(非常基础),后3题主要涉及面向对象思想和多线程知识(这部分对我来说有点难度)。

然后我就联系当初打电话面试我的人,是个项目负责人把。

随后,他与我取得了联系。在大厅内进行了面试。首先,他让我进行自我介绍,当我介绍时,他查看了我所做的题目。不知道是否是在电话面试中询问过我关于在公司完成的毕业设计的题目,他整个过程中没有询问。对于我所做的题目,他指出了我上面存在的问题。在前面的3道算法题中,他说我的思路非常清晰,结构也相当有条理。然而,后面的3道题中存在许多问题。总结一下,主要问题包括以下几个方面:

题目问起我这个问题还有什么改进之处,我想我却觉得这个问题很简单,难道是内外循环的效率问题?他说不是。我却只能问,那是什么?他说:你有没有想过把这个写成一个模板,方便其他人用,更进一步,写成一个函数,让它的功能不局限于10,可以为N?我记得我当初的回答挺明智的。我说,我没有想那么多,我以为实现就好了,模板我在选修课时老师讲过,不过没有在项目中使用到,写成函数我觉得倒是挺不错的。

2:我在学校里老师教的算法。Proc1{} Proc2{} Proc3{} 我觉得使用CreatThread函数和ExitThread函数来释放线程确实有些繁琐,而且自己对这部分代码编写也缺乏信心。因为之前在UNIX/Linux操作系统中很少编写多线程函数。

问题提出后,面试官认为,在Windows环境下进行多线程编程测试,具体来说,类QQ的应用程序中使用了多线程和socket编程吗?

我:我感觉这个项目有点长,让我有点犯愁。记得当初我写了一个线程来监听端口是否有 incoming消息。面试官:哦,原来是这样啊,你的意思是只有主线程吗?我:(真的,就是没用你不懂啊)额,就是这样的,我想用也不知道在哪里用啊。面试官:那你有没有想过同时处理多个消息的处理吗?我:没有,这只是学校的一个项目而已。面试官:那你的理解多线程有什么用途呢?我:主要是用来处理多个问题并发时的调度,还有进程资源的分配。感觉和进程差不多。面试官:嗯,线程和进程的了解有多少啊?我:线程的了解不多,进程的通信方式有几种?我:进程有三种,管道(pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。

有名管道(named pipe):有名管道也是半双工的通信方式,但它允许无亲缘关系进程间的通信。

信号量(semaphore):信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。

消息队列(message queue):消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。

信号(signal):信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。

共享内存(shared memory):共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的IPC方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号一起使用,来实现进程间的同步和通信。

套接字(socket):套接字也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同进程间的通信。

我说我也没有使用过多线程。

面试官接着我对类QQ又提出了socket的一些问题。在socket协议的具体实现中,我复习了一下相关内容,向他详细讲解了创建套接字、监听端口、封装数据包、发送数据、接收数据的过程。面试官问:您指的是使用哪种协议?听起来不太明白?我说在UDP的上层协议中使用什么?是HTTP?(什么什么的)?(我擦,怎么劳资听不懂)。就是你封装的数据包是基于什么协议进行封装的?我:哦,这个啊。我是自己定义的数据结构。发送的时候传参数不是支持传指针吗,我传的是结构体的pointer。一个string传ip+端口,一个buffer传文字啊。

面试官:我们来谈谈C++吧,你知道C++的多态特性吗?我当初的回答还算可以,不过具体如何使用这方面的问题,我一问三不知。后来,我转战学习C语言,针对malloc的分配位置以及如何分配的问题,也咨询过老师。后来,这方面的问题,我也记不太清了。

二面安排在总监办公室,询问是否可以加班,有什么特别之处。自我介绍内容较多,进一步询问是否会采用多线程技术。我回答已经学习过,实际应用中,我并没有进行深入的项目相关工作,整个过程很快就完成了。估计是本次面试的负责人是我领导。

然后是HR面:问我计划在杭州工作多久,我表示等我结婚并育有小孩,小孩上学后我便返回杭州。接着讨论薪资。HR表示,应届毕业生最高工资可达6K,而我之前写的8K差距较大。接着提到绩效奖励和补贴,整体待遇令人满意。折算后,我的年薪可达10万元。问我是否愿意参加最终面试。我想还是先不考虑,除非能提供7K。她说可以。走的时候聊了聊天。

最后总结如下:

  1. 语言基础较为薄弱。
  2. 对于多线程编程的掌握程度较为欠缺,而服务端的开发则会给予较高的重视。
  3. 对网络通信的C语言实现方面则会给予特别的关注。
  4. 在服务端开发中,对操作系统的熟悉程度要求较高,因为这涉及到对内存分配、进程管理等相关技术的优化。

ps:西湖还是挺美的。

全部评论 (0)

还没有任何评论哟~