十年沉淀,回头发觉我当年面试 “Android” 竟然这么难!

本文汇总了多个知名公司(腾讯、阿里巴巴、百度等)的春季和秋季招聘面试题,涵盖了后台开发、边缘计算、C++开发、客户端开发等多个职位。涉及的面试知识点包括Linux系统管理、网络协议、数据结构、多线程通信、内存管理、算法等。文章旨在帮助求职者回顾和准备面试。
摘要由CSDN通过智能技术生成

本文档收录了春招及秋招(含提前批)中能回忆起来的面试题。

  • 部分公司我既参加了春招也参加了秋招,将题目整合在了一起;
  • 所列题目不全,仅仅列出了我能回忆起来的部分题目;
  • 所列解答仅供参考

一、腾讯(春招 / 后台开发)
二、阿里巴巴(秋招 / 阿里云-边缘计算)
三、百度(秋招 / C++开发)
四、字节跳动(提前批 / 客户端开发)
五、深信服(提前批 / C++开发(物联网方向))
六、大疆(秋招 / 通信算法工程师)
七、京东(秋招 / 京东云-C++开发)
八、华为(秋招 / 通用软件开发)
九、VIVO(秋招 / 嵌入式开发)
十、OPPO(秋招 / 通信协议工程师)
十一、TP_LINK(秋招 / 应用软件开发工程师)
十二、中兴(秋招 / 岗位1 软件开发)
十三、中兴(秋招 / 岗位2 通信讲师)
十四、二十八所(秋招 / C++开发)
十五、CVTE(提前批 / C++开发)
十六、海康威视(秋招 / C++软件开发)
十七、烽火通信(秋招 / 软开)
十八、小米(秋招 / 系统开发工程师)
十九、七二二所
二十、七〇九所.
二十一、浦发银行(秋招 / 信息科技岗)
二十二、网易互娱(秋招 / 初级游戏开发)

一、 腾讯(春招 / 后台开发)

1、 Linux查看共享内存的方式。

使用 ipcs 命令,不加任何参数时,会把共享内存、信号量、消息队列的信息都打印出来,如果只想显示共享内存信息,使用如下命令:

 

ipcs -m

2、 打开一个网页,需要用到多少协议?

3、 查看系统I/O负载

查看CPU、内存的命令:top

Linux 中的 ps 命令是 Process Status 的缩写。ps 命令用来列出系统中当前运行的那些进程。ps 命令列出的是当前那些进程的快照,就是执行 ps 命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用 top 命令。

ps aux 和 ps -ef 两者的输出结果差别不大,但展示风格不同。aux是 BSD 风格,-ef 是 System V 风格。这是次要的区别,一个影响使用的区别是aux会截断command列,而 -ef 不会。当结合 grep 时这种区别会影响到结果。

4、 Linux 下查看进程打开的文件句柄数

查看系统默认的最大文件句柄数,系统默认是1024

具体查看方法:

  • 通过 ps -ef |grep +进程名查看进程是否存在
  • 根据查看到 SSH 的进程 ID(1792),进入进程所在目录 cd/ proc/+进程名
  • 查看此目录,可看到进程对应线程目录 task 和文件句柄数目录 fd
  • 进入 fd 目录,查看进程打开的文件句柄的详细信息
  • 通过 ls | wc -l 统计进程打开的句柄数 ( Linux 系统中的 wc(Word Count) 命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。c 统计字节数。l 统计行数。)
  • 进入 task 目录,查看进程的线程的详细信息。查看线程数同样可以采用 ls | wc -l

5、 查看文件的详细信息

 

ls -l (ll)

file +filename

stat +filename

6、 跑道问题

36个人,6个跑道,怎么筛选出前三名?

1)6个人一组,得到每个组里第一名。共6轮

2)取出每组第一名,跑一次,得到前三名,并抛弃其他三个组的人;共1轮

3)这样,第一名所在的组有三个候选者,第二名所在的组有两个候选者,第三名所在的组就只有自己一个候选者。

这些人一起跑,一次,即可选出前三名。

其实第一名在2)中已经确定。

那么,问题拓展就是,6个跑道,跑8轮最可以从多少人中筛选出前三?--37人。

7、 上N级台阶问题

https://blog.csdn.net/StepByStepTo/article/details/82695341

 

int climbStairs(int n)

{

if( n <= 2)

{

return n;

}

else

{

return climbStairs(n-1)+climbStairs(n-2);

}

}

int climbStairs(int n)

{

int i =0;

int  ret =0 ;

int * arr = (int *)malloc((n+1)*sizeof(int));

for ( i=0; i<=n; i++)

{

if(i <3)

{

arr[i]=i;

}

else

{

arr[i]=arr[i-1]+arr[i-2];

}

}

ret = arr[n];

free(arr);

arr=NULL;

return ret;

}

int climbStairs(int n)

{

int arr[3]={0,1,2};

if (n < 3)

{

return n;

}

for (int i=3; i<=n; i++)

{

arr[i%3]=arr[(i-1)%3]+arr[(i-2)%3];

}

return arr[n%3];

}

8、 在字符串中查找不重复的字母

方法一:

下标缓存法:

将一个数组初始化为0,当出现这个下标对应的字母时,则该下标对应的数字加一。结束后,统计数组中为1的下标,即为不重复的字母

方法二:

使用set

遍历插入set,当插入的时候返回false,就表明这个元素是重复的,那么就通过遍历查找,删除所有的这个元素,以此类推,得到剩下的元素就是不重复的

注意全部查找的方法:

 

while ((pos = src.find(s[i], pos)) != string::npos){std::cout << "pos = " << pos << std::endl;src.erase(pos, 1);pos++;}

9、 两个单链表是否相交

对于单链表问题,优先考虑将单链表变成循环链表

10、 扔玻璃球看在哪层楼会摔碎

既然第一步(确定临界段)的投掷数增加不可避免,我们就让第二步(确定临界层)的投掷数随着第一步的次数增加而减少。第一步的投掷数是一次一次增加的,那就让第二步的投掷数一次一次减少。假设第一次投掷的层数是f,转化成数学模型,就是要求f+(f-1)+...+2+1>=99,即f(f+1)/2>=99(第一次测试点选择100层是无意义的,必然会碎,所以无任何测试价值,

评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值