性能优化方案
使用Valgrind排查内存泄漏的原因,是否存在内存泄漏问题
数组和指针(malloc)在内存中的不同(在虚拟内存中处于不同层,数组处于栈区——一级缓存,指针处于堆区——二级缓存),为什么开辟大数组会发生段错误,开辟多大空间会导致数组无法存储(栈区开1到2M就会段错误)
jvm优化
在进行OpenSSL迁移工作时的难题
为什么选择SQLite(业务需求)
SQLite如何保证多个用户读入时,读与写的冲突(由于确实不清楚SQLite机制,我先举例了mysql中的共享锁和排他锁,但又问当没有锁机制时如何解决?我使用了乐观锁的版本号机制进行解决)
MySQL中共享锁和排他锁的语句
乐观锁适合什么场景(读多写少)
linux命令:如何查看程序运行时占用内存,如何查看整体系统的内存(分别为:top 和 free)
linux命令:如何查看接入的网络连接的情况(不会...)
TCP四次挥手详细说一下
挥手的TimeWait状态和CloseWait状态说一下。为什么需要TimeWait状态
服务器此时有大量TimeWait状态和CloseWait状态可能是什么原因?(TimeWait是timeout设置太长,CloseWait是close没写好)
假如TCP挥手时服务端到客户端一直未关闭,是否就不关闭了(不是,因为会发送心跳包检查状态)
C++的多态性是否能说一下
C++的泛型是否有了解,底层实现是否清楚
Git常用命令有什么?git pull和git fetch的区别
说明一下select和epoll的区别
进程通信方式
数据库为什么使用B+树作为索引
MySQL的引擎使用的B+树结构有何不同?不同的结构对读写有何影响
是否有了解消息队列(听过RabbitMQ,使用过MQTT)
MQTT如何实现持久化(不太记得,但用Redis持久化机制应付)
Redis有什么类型?Zset底层是什么?如何将list实现为有序去重的队列?
除此之外还了解什么中间件和分布式?
一面面试官人超好(是我面试这么久,面试体验最佳的面试官),说话温柔好听又很耐心,有一个场景题一开始没什么思路都进行一步步引导,也允许我用其他比较灵活的方式去实现(比如SQLite和MQTT那部分),大部分题目都答出来了,面试官感觉对我也很满意,所以就过了。
是否会go语言
HTTP和HTTPS区别
SSL的非对称和对称密码的作用,怎么做到密钥协商,怎么做到认证对方身份
select、poll、epoll
epoll的水平模式和边缘模式,哪种模式更高效,为什么
TCP协议和UDP协议
是否有接触过数据不一致问题?
Redis的集群模式
Redis的数据一致性问题,当并发数据进入时,如何解决写数据中数据库和缓存不一致的问题
代码阅读题
//求输出结果
#include <stdio.h>
//还有几个头文件,忘记了
int main(){
int i;
for(i=0;i<2;i++){
fork();
print("*");
}
wait(NULL);
wait(NULL);
return 0;
}不会..
【简单题】反转链表——LeetCode206
数组找数
将连续n个正整数随机去一个(不拿头尾),其它数乱序放入大小为n-1的数组中。找出被取出的数。
要求:时间复杂度:O(n) 空间复杂度:O(1)
例子:在【11,12,13,14,15,16,17,18】中拿掉16,变成【15,17,13,12,18,14,11】
结果:16
我的思考:使用第一组数据减去第二组数据即可得到,可以做一些优化,比如同时加减,可以达到目标时间空间复杂度,但面试官说如果数据量上百万时怎么做优化,我最后也没想到解决方法。
【简单题】字符串压缩——LeetCode
二面面试官怎么和一面面试官差别这么大!(改了,不想吐槽了)。感觉就是要找一个进去就能干活的,而且面试官自己也不太清楚答案...
果然不出意料,第二天就挂了...
现在就希望二面面评不要太差,不然我就[愤怒]