百度秋招提前批&正式批

提前批

1面 20分钟

基本就问了些基础,范围比较广但难度不大;

2面 1个小时

a.linux:linux下面查找当前路径下文本内容含有某个字符串的所有文档

https://www.cnblogs.com/wangkongming/p/4476933.html

grep指令即可完成 -r表示递归 直接写字符串不需要加通配符

也可以用xargs配合进行查找

b.数据结构:快排算法的基准点如何选择

https://www.cnblogs.com/y3w3l/p/6444837.html

其实是快排的一个优化问题,在数组接近有序的时候,会导致快排的效率回归到o(n2)

一种办法是随机采用基准;

第二种办法是中值法,选中间,最开始,最后的三个数的中值作为基准;

c.数据结构:快排的递归部分能否优化

尾递归:在函数的最后执行,且无需对函数值进行进一步操作。

https://blog.csdn.net/gtzh110/article/details/48730131

https://blog.csdn.net/qq_25974431/article/details/79355095

减少了递归层次,编译器会对这种递归进行优化,在进入深层递归时候,不是在递归栈进行入栈操作,而是直接覆盖栈顶。

d.算法:一共20个车站,公交车可以选择在一个车站停或不停,但是前一站没停后一站必须停,对可能的结果输出

当时理解错误了,在终点站也是可以停或不停的。第一个站点也是可停可不停。现在面试结束了无法准确判断意思了。

所以在这种题目,可以先询问下只有1,2,3个车站的时候,分别会有几种,确定下题目的意思也可以找到思路。

面试官提示了后一时刻的个数可以由前一时态的个数确定。这个题需要设定两个初始参数,一个是当前以1结尾的方案个数,第二个是当前以0结尾的方案个数。下一时刻状态可以由此时刻推算,前一时刻为1,则方案数*2,前一时刻为0,则方案数不变,且产生的新的0,1个数可定(1应该是m+n,0应该是m),总数2m+n,故可以推算在20时刻的方案。

e.算法:1-n的数中出现1的个数

这个题其实应该先将一下最简单的思路,就是从1到n遍历并统计每个数中出现1的个数。

其次这个题目是可以通过对数进行划分进行化解的。把数划分为当前位,低位,高位。当前位不同的值依赖于高低位的值

https://blog.csdn.net/i_love_zxy/article/details/75579196

case 0: icount += iHigherNum *ifactor; break;

case 1: icount += iHigherNum *ifactor +iLowerNum +1; break;

default: icount += (iHigherNum +1)*ifactor; break;

正式批

1面

1.linux下如何对文件中的某个字符串进行替换

https://www.cnblogs.com/nkwy2012/p/6365714.html

a.使用vim工具

:s/well/good/ 替换当前行第一个 well 为 good
:s/well/good/g 替换当前行所有 well 为 good
:n,$s/well/good/ 替换第 n 行开始到最后一行中每一行的第一个 well 为 good
:n,$s/well/good/g 替换第 n 行开始到最后一行中每一行所有 well 为 good

b.直接替换文件中字符串,不需要打开文件并且可以批量替换

perl命令

perl -p -i.bak -e 's/\bfoo\b/bar/g' *.c
将所有C程序中的foo替换成bar,旧文件备份成.bak

perl -p -i -e "s/shan/hua/g" ./lishan.txt ./lishan.txt.bak 
将当前文件夹下lishan.txt和lishan.txt.bak中的“shan”都替换为“hua”

sed命令

sed -i "s/shan/hua/g"  lishan.txt

把当前目录下lishan.txt里的shan都替换为hua

2面

1.写一个树的类,包含删除,添加,查找等功能

还是应该在添加这步问一下面试官具体的输入。导致了我理解有点问题,把添加节点的操作想复杂了。这个地方的添加应该可以做一个给出父节点的方法即可。

然后应该去实现树常见的方法例如遍历,查找,删除,求树的深度等;

a.用数组的方式存下节点及对应关系,消耗的空间较大

b.用链表的方式存储(定义Node节点)

2.数据库二级索引

mysql中每个表都有一个聚簇索引(clustered index ),除此之外的表上的每个非聚簇索引都是二级索引

就是非聚族索引,叶节点仍然是索引节点,并保留一个链接指向对应数据块。

3.选出大于同类别平均值的sql语句

https://zhidao.baidu.com/question/1865528640676138587.html

a.使用关联子查询

select id from a  where a.score>(select avg(b.score) from b where a.cate = b.cate);

b.先求出平均成绩,再进行查询

select id from a join (select id,avg(score) as avgcore from test group by cate ) as b on a.id = b.id and a.score> b.avgcore;

你可能感兴趣的:(面试)