开始问好,坐下.然后面试官让我做自我介绍.他浏览简历.
然而大概是不够严肃认真的问题,没有好好准备.说了个"我是xx学校,xx专业的xxx"之后,面试官就打住了,然后.看简历.
选定了一个项目<基于UDP的畅聊系统>
介绍项目.不让用笔画,直接口述表达.但是有表述不清,所以有转换成了面试官问用到的知识点.
涉及到ncurses.简单窗口绘制
使用线程方案进行多窗口同步更新
1.在使用线程绘画过程中,因为执行全局句柄操作,所以需要使用pthread_mutex进行锁处理.
1.1是否死锁,是否会崩溃.死锁避免方法等
2.客户端输入数据,通过cppjson进行序列化处理.
然后面试官问了
2.1序列化,反序列化作用.同时,
2.2除了json之外还有什么序列化/格式化工具.(只记得strstream,应该使用sprintf,vprintf也可以进行.)
下来问了这个畅聊系统的实现
3.是否可以使用TCP进行处理.,,qq使用UDP/TCP连接 为什么.
3.1 TCP和UDP的区别
3.1.1TCP UDP 头部信息等问题.
在项目实现中使用了广播,那么
3.2 255.255.255.255与NETID.MASK 方式的广播有什么差异.
3.3 广播风暴是怎么产生的.如何避免
关于TCP问题(一脸懵逼)
4.1 TCP半连接与全连接
4.2 TCP粘包问题
4.3 socket网络编程问题
4.4 tcpdump使用
关于tcp以及网络编程的问题.因为实在答不下去了,我就直接的跟面试官讲了这一块不太熟.
于是乎,跳前边:
就我说设计模式比较熟悉了.于是就那么
5写一个单例模式
我写了一个饿汉模式的单例,然后因为一些不细心/紧张.少写了一个public.
然后,面试官提点
5.1 需不需要加锁.
5.2 加锁进入if之后需不需要加锁,为什么(只记得需要加锁,忘记了内部锁的缘由.)
关于设计模式,其实想补充证明自己懂得比展示的多的问题.
eg
可以单例使用模板方式处理,
通过工厂方式实现单例,
使得单例可以扩展....
5.3 关于单例模式,何时释放,清除.
最后,貌似还问了个:
6 你平时通过什么途径获取最新it知识...(大概描述)
答的比较差.很是犹豫,徘徊.
然而,却忘记了一个最主要的问题.
因为自己从
6 写代码(找出数组中第n大数字).实现
6.2 之后问了个使用两个栈实现队列的问题.然后,大概是因为我和他都了解(我的字台不能看了)
于是,我跟他讲:简单说下思路,就不写代码了.然后gg(这个貌似不太好,可能除了思路外,认为代码能力不足了)
7 到单例模式实现
这个过程中都没有给面试官一个满意的点
{书写太差,最初实现只是为了功能完成,且完成之后少了认真检查.}
在自我介绍/项目介绍时,没有认真准备,给出一个合理的思路以及表述.使得面试官已经在心里给出了一个差评.之后弥补这个黑点是很难的.
没能成功引导面试官进入自己复习,稳定的点.且前一天没有仔细阅读项目代码.这些都是很大的问题.
那么反思结果
1.自我介绍/项目介绍,严肃认真.条理清晰简介.
因为这个过程可以很直接的带着面试官进入 自己可能需要谈得点.
2.代码书写问题.
字体尽可能工整(使用铅笔也可).字尽量大.同时不要节省纸张,留下一定的空格 便于二次修改.
3.知识点问题:
网络部分太差,服务器编程以及相关概念需要补充.特别是网络知识TCP/UDP报头以及原理等.