1.说说C++中const关键字的作用?
参考解答:1)修饰变量使其不能被修改;
2) 修饰函数参数,表明传入的参数在函数内不能被修改;
3)对指针而言,可以指定指针指向的内容不能被修改(const int * p 常量指针——指向“常量”的指针),也可指定指针的指向不可改变(int * const p指针常量——指针类型的常量),也可同时指定(const int * const p 指针指向和指向的内容都不能被修改;
4) 修饰类的成员函数,表明其是常函数,不能修改类的成员变量,const成员函数不能调用非const成员函数,因为非const成员函数可能会修改成员变量。
2. 说说C++内存分区中堆栈的区别?
参考解答:1)存储内容:栈存放的是局部变量和函数参数等;堆存放的是new/malloc申请的变量;
2)管理方式:栈由系统自动分配,自动释放;堆由程序员手动申请,手动释放;
3)空间大小:32位系统一般堆能达到4G,可以看做堆没有什么限制的,但栈一般是有特定大小的,windows下一般2M;
4)生长方向:栈是向下(高地址——>低地址)生长的,堆是向上生长(低地址——>高地址)的;
5) 申请效率:栈由系统自动申请分配,速度较快;堆由new/malloc分配,速度较慢。
3. 实践中如何优化MySQL?
参考解答:1)SQL语句及索引的优化;2)数据表结构的优化;3)系统配置的优化;4)硬件的优化。四条从效果上来说,第一条影响最大,后面越来越小。
4. 如何设计一个高并发的系统?
参考解答:1)数据库的优化,包括合理的事务隔离级别、SQL语句优化、索引优化;2)使用缓存,尽量减少数据库IO操作;3)分布式数据库、分布式缓存;4)服务器的负载均衡。
5.什么叫小端/大端机器?
参考解答:小端/大端的区别是指地位数据存储在内存地位还是内存高位。小端机器:数据低位存储在内存低位,数据高位则存储在内存高位;大端机器:数据低位存储在内存高位,数据高位存储在内存低位。目前绝大多数都是小端机器,符合人们的逻辑思维的数据存储方式。
6.请描述长连接和短连接?
参考解答:长连接和短连接指的是TCP的长连接和TCP的短连接。
TCP长连接:TCP长连接指建立连接后保持连续而不断,如一段时间没有数据交互,保活定时器超时后,服务端会发送探测报文给客户端检测客户端是否在线。连接——传输数据——保活——传输数据——保活——........。
TCP短连接:指建立并传输数据完成后立即断开。连接——传输数据——断开
应用场景:长连接适合单对单通信且连接数不太多的情况,短连接适用于连接数多且经常需要更换连接对象的。
HTTP/1.0中,默认使用短连接,HTTP/1.1起,默认使用长连接。HTTP的长连接也不是永久保持连接,保活计时器超时后,探测报文没回应,那么也会断开连接。