这是我遇到最蛋疼的一次面试,进入大厦来到7楼,首先映入眼棉的是黑漆漆破旧的服务台,给我很不好的印象。当时就打算转身就走,考虑到做了一个多小时的车过来了还是面一面吧。首先来的是HR,进来介绍了公司的业务,上班时间,加班和奖金等问题。令我非常生气的是作为软件开发,还用每年两三个月的出差时间?当时又有了准备走的想法。一面是技术面,估计来的是个小组长,年纪三十多吧,手里拿了我的简历和一张纸,看样子上面写的是要问的问题。满满一张纸。 先谈做过的项目有哪些,负责这些项目的那些模块,软件都有哪些功能,顺便根据你的回答问些可能涉及到的C++知识。这些都不在话下,毕竟本人也是做过大项目的,一些问题还是比较清楚的。问到设计模式,这个本人也有一些研究和应用,跟他谈了几种设计模式,本打算和他洗讲代理模式和适配器模式(这个楼主项目里面用的多)被他略过,当时就怀疑这小子是不是不懂设计模式?然后问多线程的同步互斥,和多进程通信问题。当然这些问题楼主都有过研究自不必在话下。这类问答题归为以下几题:
面试官问的面试题: 1.什么时候用多线程?
2.多线程的好处和缺点?
3.使用多线程要注意哪些问题?如何解决?(跟他详谈了线程的同步与互斥的几种方法,临界区,信号量,时间,互斥量,并比较详细的谈了这几种方法的异同,结合楼主做过的项目,谈了实际中在哪些场景下用到,看他样子,就知道他自己可能都没弄明白)
4.一些任务 用一个进程多个线程 和 用多个 进程同时来处理如何选择?(楼主首先想到了性能,如果一项任务的执行比较占用内存或者cpu,而且职责比较单一可将其独立开辟一个进程,然后多进程通信来解决问题,其他情况用多线程,然后解释了进程间通信会比较慢,比较占用资源,线程间通信会稍快,楼主自我感觉回答的有些道理)
5.问了软件设计的几层构架(服务器,业务逻辑,界面)
6.问到软件架构的时候顺便问了数据库问题。接触过哪些数据库(sqlite),然后又问在多个表查询的优化问题(这个楼主真不知道怎么回答,直接说不知道),又问数据库的存储结构(真没印象,直接回答不知道),问了数据库如何查询,如何插入删除指令(这个楼主还是懂一些的,sqlite开源数据库,跟他扯了里面的一些函数,估计他没接触过sqlite然后略过)
7.接着问网络结构,7层架构,哪7层(这个大学课本里面还记得一点,背出来几个,然后又问IP属于哪层?胡扯了物理层,不知道对不对)
8.接着穷追不舍的问socket编程(我擦这个楼主出了书上见过以外,根本就没用过,直接讲项目中没接触过,只知道有这玩意,不会用,然后还一直穷追不舍的问socket通信原理?脑子有病)
9.问了解不了算法?(肯定了解啊,然后问了几种排序,问了几种排序实际运用中如何选择?楼主跟他扯了跟时间复杂度有关,跟内存占用有关,结合这两种因素来选择,揭示了几种排序的好处和弊处,比如说堆排序占用内存较大,数据量大影响速度,竟然告诉我答案是和数据量有关,不知道我讲的他有没有在听)
10.开始面向对象了,多继承的好处和坏处?(楼主严重怀疑他普通话是否标准,让他重复了几次,楼主搞忘记了多继承的意思,不知道是一个基类派生多个子类,还是一个几类向下派生一串类,然后直接讲忘记了,请他告知这名词啥意思,在得知是一个基类派生多个子类时,一时想不起来如何回答,冷场)
11.面向对象的实现原理?(实话说楼主最讨厌别人问些概念性的问题,不如来套笔试题,不过这个问题楼主还是知道的,回答是通过类的继承,用基类的指针可以指向其派生的类,这么做的好处是在运行中可以识别出是哪个派生类,运行期识别)
12.类设计要注意的问题?(然后跟他讲了单一职责,解释了一些)
13.类继承的好处和坏处?(楼主回答好吃是复用了基类的特性,代码重用,然后他趁此问了还有哪些其他方法能实现代码重用?楼主卡住了,想了会,回答除了类的继承还有组合,没想到答对了,哈哈哈,然后接着问继承组合如何选择,跟她解释了,如果几个类联合起来完成一项工作,使用组合,反正回答的不是很清楚吧)
14.还有很多问题,不记得了,反正非常全面,面试官普通话有问题,请他说了几遍STL,说的我都不懂,然后请他在纸上写,我擦这么简单的问题还问。问了几种容器的储存性质,如何选择,map结构?都一一做了解释。相信回答是对的。
15.泛型编程相关的问题?有没有用户泛型编程,肯定用过啊,项目代码里面底层实现都是用的泛型编程。一一谈了相关问题。
等等还有一些其他楼主记不起来的问题,给我的感觉,这么坑爹?问了一下午的概念性的问题,没有笔试。没有编码,就问问答题。因为面试的会客室在他们公司内部,所以看到了工作环境,很拥挤。楼梯口有员工在哪抽烟。感觉很不好。一面就这样过去了,看了手机,耗时1.5小时,大概等了10分钟(个人感觉很长很长啊),然后HR进来告诉我一面通过,等会技术经理来二面,我擦,又等了大概十分钟的样子,进来一个白白胖胖的男子,又是自我介绍?谈了最近几次离职的原因。工作的内容和性质。闲聊了一会,就开始技术面,又是多线程的问题,这个研究过,讲的还算比较清楚,然后问了软件的三层架构,通信的同步异步问题,同步异步如何获取结果,如果知道发给服务器的数据是成功的?(回答同步等待服务器返回结果,异步等待消息回调)。然后又是socket,看样子是一面的面试官注明的我在socket这方面的欠缺?然后就聊了聊公司文化,问我有没有什么问题要问他。直接回答没有。然后就是HR进来谈薪资,这时面试已经过去将近三个小时了,我迫不及待的想走,谈毛线,那有软件工程师还出差的,直接想走了。然后跟我讲公司什么正规啊,每年14个月薪资,公积金交的很高啊什么什么的。狗屁一通。虽然提供的薪水比我要求的相差一小点点。但是这氛围我一点不能接受。直接说了不能接受出差,找了理由想撤,HR比较着急,说今天将offer发到我邮箱。来不来这周给答复。我说了声好就离开了。