阿里一面面经C++,攒个人品
	面了一个半小时,感觉嗓子都要哑了……
	Q:做个自我介绍吧
	A:聊项目
	……(聊了挺久)
	Q:我看你这边github上有一个协程库,能介绍一下协程的概念吗?
	A:协程,用户级,轻量,快,效率高,但是不结合多线程难以利用多核
	Q:能说一下怎么实现的吗?
	A:讲了一下基于ucontext怎么切换上下文
	Q:协程和线程的区别?
	A:调度比较快,不用进内核。单Schedual难以利用多核?
	Q:内存上有什么区别?
	A:同一个CPU上多个协程不会产生临界区竞争。
	Q:协程切换的时机?
	A:定时器,文件阻塞,拿到锁阻塞,函数调用的时候。
	Q:你写的库的对于使用者有什么优势?
	A:……你可以用我的APIbalabala……
	Q:给我一个用你的协程库的场景吧??
	A:YY了一个轮询读文件的场景。
	Q:你这个说到了你维护了一个栈,这个栈是干什么的?栈的维护是你自己做的吗?
	A:维护每个协程的上下文。我就只需要管理这块内存就可以。不是很完善……
	Q:上个读文件的场景,什么时候才会阻塞?
	A:设一个NONBLOCK位,在出错读到EAGAIN的时候就切换出去。
	Q:如果两个都阻塞了呢?
	A:那就没辙了……举了一个很多fd用epoll轮询的场景。
	Q:从你个人角度有没有遇到过比较困难的场景?
	A:balabala……
	Q:说说你实习的项目?
	A:balabala……
	Q:说说map with mutex和sync.Map的区别?
	A:Mutex是悲观锁,而且那个粒度比较大。sync.Map是带缓存的,体验和CAS差不多。
	Q:聊点基础的吧
	A:好……
	Q:sizeof和strlen的区别?
	A:你们都懂得
	Q:一个int大概多大?
	A:32位4个字节,64位8个字节
	Q:int在内存中字节排布?
	A:小端序
	Q:虚函数指针什么时候会出现?
	A:在有虚函数的时候~
	Q:static的作用?
	A:都懂得,这里不展开了
	Q:多个进程同时监听一个UDP端口会怎么样?
	A:不懂……
	Q:你可以了解一下这方面。进程的内存结构?
	A:内核、栈、动态链接库、堆、静态区、代码段、保留区
	Q:静态变量和全局变量在哪个区?
	A:静态区……
	Q:++i和i++的区别?
	A:++i效率比较高。
	Q:虚基类和普通基类的区别?
	A:菱形继承问题
	Q:空类的大小?
	A:1byte
	Q:为啥?
	A:不懂…
	Q:引用和指针的区别?
	A:都是用指针实现的。
	Q:进程间通信?
	A:socket, 管道,消息队列,共享内存
	Q:TCP三次握手?
	A:讲了讲(忘了讲状态转移)
	Q:TIME_WAIT?
	A:讲了讲……感觉面试官不是很满意?
	Q:CLOSE_WAIT呢?
	A:讲了讲……吐槽了一下一般都是代码写得有问题(逃
	Q:epoll有几种类型?
	A:ET,LT。
	Q:调试程序用什么?
	A:gdb,log,valgrind, vs
		Q: CPU高了怎么看?
	
	A:free+pprof,看火焰图
	Q:其实C/C++也有类似地工具
	A:嗯
		Q:coredump有了解过吗?
	
	
		A:只用过,不知道原理
	
	
		Q:你可以再了解一下呀。这个还是很重要的。
	
	
		A:好的
	
	
		Q:hash冲突怎么解决?
	
	
		A:拉链和线性探查
	
	
		Q:还有啥要问我的?
	
	
		A:你们这边比较青睐有什么技术积累的人?
	
	
		Q:balabala…C/C++
	
	小哥人超级好,讲话也好听ORZ
	大概一小时后二面通知,说要视频面……还要现场写代码,慌得一批……
#面经##秋招##阿里巴巴##C++工程师# 查看23道真题和解析
查看23道真题和解析