C+开发实习生
1面
1)代码题:移除链表元素
2) 问项目,线程之间怎么通信。
二面:
1)手撕代码:大数减法,"123456789123456789123456789-1234567891456789"
2) 讲项目,epoll的优势
3)数据库索引的实现:B+树。
4)有哪些数据库引擎:InnoDB ,myisam,CSV,MEMORY,BLACKHOLE。
5)100个进程 同时执行update user set click = click + 1 where id = 1;会发生什么?
答:对于UPDATE、DELETE、INSERT语句,Innodb会自动给涉及的数据集加排他锁(X);对于普通SELECT语句,Innodb不会加任何锁。如果更改操作不是在索引上,那么加锁,就是加的表锁。
InnoDB行锁是通过给索引上的索引项加锁来实现的,这一点MySQL与Oracle不同,后者是通过再数据块中,对相应数据行加锁来实现的。InnoDB这种行锁实现特点意味着:只有通过索引条件检索数据,innoDB才使用行级锁,否则InnoDB将使用表锁,在实际开发中应当注意。
三面
1)代码题:大数乘法
2)项目
3)写sql语句,SELECT student,count(*) FROM table GROUP BY course ORDER BY desc;
4)map底层实现,红黑树的优势,map怎么实现线程安全
全部评论
(2) 回帖