之前暑期实习投过一次,做的比较拉跨,这次感觉还可以,思路基本上差不多,就是具体的实现,二三题都是只写了一个最后的函数,不知道对不对。
TCP服务端调用API顺序
应该是先绑定端口,再开始监听,接收到客户端请求建立连接,接受或发送数据,最后关闭连接。
bind listen accept recv/send close
颜色混和的RGB值,这个不会
查了一下好像是透明度啥的,没咋用过
二分查找次数,这个遇到过挺多次
偶数直接除二找下标,奇数找中间
每次找的都是完全没有找过的那部分,中间那个不用纠结
掷色子的概率
总共36种情况,大于8的
6-6,6-5,6-4,6-3
5-5,5-4
这6种,所以是1/6
出入栈顺序
这个什么线程,原子锁的意思就是,现在两个栈,一个栈入栈的时候就不能同时出栈,在某个时刻只能进行入栈或者出栈的其中之一操作
epoll
IOCP(I/O Completion Port,I/O完成端口)是Windows操作系统中伸缩性最好的一种I/O模型。 1 I/O 完成端口是应用程序使用线程池处理异步 I/O 请求的一种机制。 处理多个并发异步I/O请求时,使用 I/O 完成端口比在 I/O 请求时创建线程更快更高效。
虚函数
https://blog.csdn.net/snowsnowsnow1991/article/details/51925807
父子类构造函数顺序
首先说说构造函数,大家都知道构造函数里就可以调用成员变量,而继承中子类是把基类的成员变成自己的成员,那么也就是说子类在构造函数里就可以调用基类的成员了,这就说明创建子类的时候必须先调用基类的构造函数,只有这样子类才能在构造函数里使用基类的成员,所以是创建子类时先调用基类的构造函数然后再调用自己的构造函数。通俗点说,你要用某些物品,但这些物品你没办法自己生产,自然就要等别人生产出来,你才能拿来用。
接着就是析构函数了,上面说到子类是将基类的成员变成自己的成员,那么基类就会只存在子类中直到子类调用析构函数后。做个假设:假如在基类的析构函数调用比子类的先,这样会发生什么事呢?类成员终止了,而类本身却还在,但是在类存在的情况下,类成员就应该还存在的,这不就产生矛盾了吗?所以子类是调用自身的析构函数再调用基类的析构函数。
现在到了虚函数了,virtual主要作用是在多态方面,而C++的多态最主要的是类的动态绑定,动态绑定则是指将子类的指针或引用转换成基类对象,基类对象就可以动态判断调用哪个子类成员函数。这就说明在没有子类指针或引用转换为基类对象的话,virtual没有存在意义(纯虚函数除外),也就是有没有virtual都是调用其自身的成员函数。通过这些分析,对于virtual就有了眉目了。当子类指针或引用转换为基类时,若基类中有用virtual定义的函数,被子类重写后,此基类对象就会根据子类调用子类中的重写后的函数,而不是基类中的函数;反之,若是基类中没有用virtual定义,则不管基类被赋值的是哪个子类的值,调用的都是基类的成员函数(当然指的值子类重载的基类函数,不然就算要调用子类特有的成员函数也会编译不过)。
指针数组
hello\0
5-0
运算顺序
编程题
非零完全平方和的问题
岛屿联通问题
岛屿联通及面积周长问题
后面两个做法类似,广度优先搜素,前面那个用数组保存记录了一下之前的平方数,也挺快做出来了。
注意4399笔试最后应该人工核验的,所以重在思路而非结果。