1.c++11有哪些特性
还是看以前这篇博客https://blog.csdn.net/lishun1422840684/article/details/100013684
2.linux下的一些常用命令
3.有哪些智能指针,有什么区别
C++11 中提供了三种智能指针,分别是 shared_ptr , unique_ptr 和 weak_ptr 。shared_ptr 允许多个指针指向同一个对象,unique_ptr 则“独占”所指向的对象,weak_ptr 则是和share_ptr 相辅相成的伴随类。舍弃了auto_ptr,详细的自己去找资料。
4.linux查看test进程拥有的线程
我写的是top | grep test 这应该不对
方法一:PS
在ps命令中,“-T”选项可以开启线程查看。下面的命令列出了由进程号为<pid>的进程创建的所有线程。
ps -T -p <pid>
方法二:要让top输出某个特定进程<pid>并检查该进程内运行的线程状况:
top -H -p <pid>
方法三: Htop
一个对用户更加友好的方式是,通过htop查看单个进程的线程,它是一个基于ncurses的交互进程查看器。该程序允许你在树状视图中监控单个独立线程。
要在htop中启用线程查看,请开启htop,然后按<F2>来进入htop的设置菜单。选择“设置”栏下面的“显示选项”,然后开启“树状视图”和“显示自定义线程名”选项。按<F10>退出设置。
5.指针和引用的区别
这个自己上网查一下,挺容易的
6.完善以下程序,打印出“hello”
#include<stdio.h>
Void test()
{
}
int main()//main函数不能动
{
return 0;
}
这个真不知道,main函数里不调用test怎么打印“hello”
看到全局对象的构造函数会在main函数之前执行这句话,突然迷惑许久的问题
终于解决了
7.100!后面有几个0?
我当时傻逼,居然写了3个,以为10后面有2个,100那就3个……
10!有2个那是10一个,2*5一个,我真菜
100!
末尾想要产生0,那么必然两个数相乘为0,比如2*5,4*5,6*5。。。总之一定要有5,那只需要看1~100中间可以分解出多少个5就可以了。看他相乘的数,中间有多少个5,比如5,10,15,20,25,30,35,40,45 。。。100 ,那么每一个都有5,那么一共是100/5=20个,当然了有的数能分解更多的5出来,比如25=5*5,50=5*5*2,75=5*5*3,100=5*5*4 ,一共4个可以在分解出5*5的数。因为这些数我们已经算了它一个5了,那只需要多算一个他的5即可。20+4=24
8.重载overlode、重写overwrite、隐藏override的区别
还有3个是英文题,我没太理解意思,不过也写了答案,看面试官就问了第一个英文题和上面那个打印“hello”和100!的,其他没问,这3个肯定错了。
1.第一个英文大概是一些小数的乘积为10000
不确定,英文太渣
2.第二个是一个n+1的数组,有1-n的数在里面,求出重复的那个值
这个英文还是看懂了的。
用数组或者hash_map计数,或者利用题目中元素处于1~n的范围,把元素分为两组,判断两组元素个数,如果大于范围,则重复的数字就在这个范围内。例如:1~3范围中有4个数,说明其中至少有一个重复的数字。按此二分下去,将会剩下一个数字有两个,最后输出。
3.第三个有点记不清了,好像是有一个链表,链表里面有一个数超个一半,什么什么的