CVTE 面试
- 万年不变的自我介绍
- 问了下自己做过什么项目
- C/C++的区别,更倾向与哪个?
答:主要是类和多态,扯了下C是面向过程式编程,而C++则主要是面向对象(类似Java),当然也可以面向过程(类似C),在C++11新特性里有多了个函数闭包,类似于javascript的函数式编程,C++就像一把锋利的瑞士军刀。
然后就问了下多态内部是怎么实现的?
答:每个类里面都有一个虚表,通过存储的函数指针调用
这是在哪个阶段执行的?
答:运行时。
确定吗?
答:看起来像是在运行时执行的,虚表则是在编译阶段就建立好的,运行时通过虚表存储的函数指针调用相应的函数。 - 说一下TCP建立连接的过程(结合下socket的接口说说)
说了三次握手的建立过程,以及为什么要三次握手,关于接口记得不太清晰,说得不好。说着说着问了下为什么要绑定ip和端口号,端口号有什么作用? - C++里的浅拷贝和深拷贝的区别?
扯着扯着扯到java去了,java全部(除了内置类型)都是传引用,但需要一个GC来管理内存,而C++没有GC,需要自己管理内存。 - 给你一个巨大的文件,里面存放的url,去除掉重复的url
一开始答用一个Map保存这些url,去除重复,然后又扯了下将url映射成数字(信息指纹)存取,节省内存空间。
就被反问道:是要全部存在内存中吗?很大的文件喔?
思考了两秒钟,说是借助外部存储,将url分类,通过域名分类,将大文件url分为小文件,然后再用map去重。 - 写一个小程序
给定一串字符串,将字符串里的单词调转过来
例如:Hello CVTE !
输出:CVTE Hello !
哎,没注意到“!”,以为“!”也是单词,写出来的程序结果为:
!CVTE Hello