百度校园招聘历年经典面试题汇总:开发测试岗
(1)、sql语句增、删、查、改
1.使用insert插入单行数据:
insert [into] <表名> [列名] values<列值>
insert into Students (姓名,性别,出生日期) values ('王伟华','男','1983/6/15')
2.使用insert,select语句将现有表中的数据添加到已有的新表中
语法:insert into <已有的新表> <列名> select <原表列名> from <原表名>
例:insertinto addressList ('姓名','地址','电子邮件')selectname,address,email from Strdents
3.添加列语句-
alter table 表名 add (列名1 类型1,列名2 类型2,列名3 类型3,……)
二、删:有2中方法
1.使用delete删除数据某些数据
语法:delete from <表名> [where <删除条件>]
例:delete from table1 where name='王伟华'(删除表a中列值为王伟华的行)
2.使用truncate table 删除整个表的数据但表的结构、列、约束、索引等不会被删除;
语法:truncate table <表名>
例:truncate tableaddressList
三、改 使用update更新修改数据
语法:update <表名>set <列名=更新值> [where <更新条件>]
例:update addressList set 年龄=18 where 姓名='王伟华'
set后面可以紧随多个数据列的更新值(非数字要引号);where子句是可选的(非数字要引号),用来限制条件,如果不选则整个表的所有行都被更新
1.普通查询
语法:select <列名> from <表名> [where <查询条件表达试>] [order by <排序的列名>[asc或desc]]
1).查询所有数据行和列
例:select* from a
说明:查询a表中所有行和
2).查询部分行列--条件查询
例:selecti,j,k from a where f=5
说明:查询表a中f=5的所有行,并显示i,j,k3列
3).在查询中使用AS更改列名
例:selectname as 姓名 from awhere gender='男'
说明:查询a表中性别为男的所有行,显示name列,并将name列改名为(姓名)显示
4).查询空行
例:selectname from a where email is null
说明:查询表a中email为空的所有行,并显示name列;SQL语句中用is null或者is not null来判断是否为空行
5).在查询中使用常量
例:selectname '北京' as 地址 froma
说明:查询表a,显示name列,并添加地址列,其列值都为'北京'
6).查询返回限制行数(关键字:top )
例1:selecttop 6 name from a
说明:查询表a,显示列name的前6行,top为关键字(Oracle 中没有top关键字用rownum替代)
select * from a where rownum<6
7).查询排序(关键字:order by , asc , desc)
例:selectname
from a
wheregrade>=60
orderby desc
说明:查询表中成绩大于等于60的所有行,并按降序显示name列;默认为ASC升序
2.模糊查询
1).使用like进行模糊查询
注意:like运算副只用语字符串,
例:select * from a where name like '赵%'
说明:查询显示表a中,name字段第一个字为赵的记录
2).使用between在某个范围内进行查询
例:select * from a where age between 18 and 20
说明:查询显示表a中年龄在18到20之间的记录
3).使用in在列举值内进行查询(in后是多个的数据)
例:select name from a where address in ('北京','上海','唐山')
说明:查询表a中address值为北京或者上海或者唐山的记录,显示name字段
3.分组查询
1).使用group by进行分组查询
例:selectstudentID as 学员编号, AVG(score) as 平均成绩 (注:这里的score是列名)
fromscore (注释:这里的score是表名)
groupby studentID
2).使用having子句进行分组筛选
例:selectstudentID as 学员编号, AVG(score) as 平均成绩
fromscore
groupby studentID
havingcount(score)>1
说明:接上面例子,显示分组后count(score)>1的行,由于where只能在没有分组时使用,分组后只能使用having来限制条件,
(2)、CPU 和 GPU的区别
形象化一点:cpu 就像公司里的高级工程师,能干很多复杂任务和简单任务,但他精力有限,单位时间内干的很少;GPU是流水线上的工人,只会干简单的事情,但是效率特别高。
l CPU和GPU其设计目标的不同,针对不同的应用场景。CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂。
l GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。GPU只有简单的控制单元,省去了Cache。(1)计算密集型的程序。(2)易于并行的程序。
(3)、推荐的算法有哪些
基于内容的推荐算法:喜欢哈波特I,给推荐II,或者根据职业地址等推荐。
协同过滤推荐算法:需要通过用户行为来计算出用户或者物品间的相关性。比如你的朋友喜欢电影哈利波特I,那么就会推荐给你,这是最简单的基于用户的协同过滤算法。还有基于Item的协同过滤算法,期间经历聚类SVD等训练完成,推荐过程较快。
基于知识的推荐算法:类似内容推荐吧
(4)、协同过滤怎么实现的?
寻找偏好相似的用户(聚类算法,欧几里得距离、相似度等)->为相似的用户提供推荐物品(加权排序法)
基于物品的协同过滤(简单来说就是如果用户A同时购买了商品1和商品2,那么说明商品1和商品2的相关度较高。当用户B也购买了商品1时,可以推断他也有购买商品2的需求。)寻找相似物品->基于此对用户推荐。
(5)、熟悉的Linux命令,查看磁盘空间的命令,如何找到一个文件中含有aaa 和 bbb和行
1. linux 中查看监听网络端口命令
netstat - a
2. more和cat的区别
cat查看文件内容
more分页查看文件的内容
3. linux 改密码命令
passwd
4. 改权限命令
chmod
5. 如何结束一个进程?kill-9和kill -11的区别——美团
kill命令。kill命令是通过发送信号给进程达到中断的目的。
kill -9:发送的信号是:sigkill,相当于exit,不能被捕捉或忽略,所以会立即杀死进程
kill -11:发送的信号是:sigterm,当进程接受到这个信号后,大部分会释放自己的资源,然后再停止。但是有一部分,接收到信号以后,可以不立即停止,例如如果正在等待IO,则不会立即作出响应。所以sigterm信号会被阻塞、忽略。
6. 在性能测试中,你有用到什么命令?——美团
ps、top、free查看进程使用情况,kill杀死进程
iostat查看CUP和各设备IO使用率
vmstat查看内存使用情况
7. 查看磁盘空间的命令
du查看文件目录大小 du -h
df查看磁盘使用情况 df –h df ---- disk find
-h 带有大小单位
8. 如何找到一个文件中含有aaa和 bbb和行
【https://www.cnblogs.com/lesleysbw/p/6388026.html?utm_source=itdadao&utm_medium=referral】
grep'aaa' *.txt|xargsgrep'bbb'
grep:强大的过滤,不同于find Global Regular Expression Print全局正则表达式版本
xargs: extended arguments,给命令传递参数的一个过滤器,也是组合多个命令的一个工具。
https://blog.csdn.net/achenyuan/article/details/78674102
(6)、白盒和黑盒测试的方法有哪些
黑盒测试的测试方法有:等价类划分、边界值分析法、猜错法、随机数法、因果图。
白盒测试的测试方法有:代码检查法、程序变异、静态结构分析法、静态质量度量法、符号测试法、逻辑覆盖法、域测试、Z路径覆盖和基本路径测试法。
(7)、如何测试一个三角形是否是一个等腰三角形,写出测试用
等价类划分:
边界值分析:
因果图:
(8)、Python实现字符串替换
略。
(9)、排序的算法以及时间复杂度
略。
(10)、如何分析两个词是否相似
机器学习的 对每个单词用相似向量?
(11)、给一个URL,如何判断一个含100万条不重复的URL的文件中是否有这个URL?
先用md5对url进行编码,以此为key将url存入哈希表里进行索引,就是一个建索引的快速查找问题,
(12)、对一个自动贩卖机进行功能测试
(13)、有50个红球,50个蓝球,如何放入两个盒子中使得拿到红球的概率最大 都放到一个篮子里?
(14)、有5个强盗分100枚金币,从1号开始进行分配,必须有半数服从分配才通过,否则1被毙掉,由2号开始分,问1号要怎样分才能使自己利益最大化?
倒序分析。
自己98, 3号1个,5号1个。
{4,5}{100,0},所以5会在3分的时候投赞成票只要3给他分一枚,所以{3,4,5}{99,0,1}就可以,故4肯定会在2时候投反对票,有半数起作用2不会被干死,{2,3,4,5}{99,0,1,0};3,5肯定不干,那为了保证自己有一枚金币,那么会在1分配时投赞成票,只要1给他们各一个,所以{1,2,3,4,5}{98,0,1,0,1}
(15)、数据库知识:姓名,班级、课程名、分数,求语文分数最高的学生?求每个班语文成绩最高的学生?
一、显示每个地区的总人口数和总面积.
SELECT region, SUM(population), SUM(area) FROMbbc GROUP BY region
二、显示每个地区的总人口数和总面积.仅显示那些面积超过1000000的地区。
SELECT region, SUM(population), SUM(area)
FROM bbc
GROUP BY region
HAVING SUM(area)>1000000
selectname
fromstudent
wheresubject = ‘语文’
order by score desc limit 1
selectname
from(select name ,max(score)as score ,classID from student where subject = ‘语文’ group by classID) b
…………………………………………………
Selectname , max(score), subject
Fromstudent
Groupby subject
(16)、三次握手,每次发送的内容都是什么?
四次挥手的seq=u+1,是A已经不再向B发data了,不对 是本次发送的初始序号为u+1;
- 序号seq:用于对字节流进行编号,例如序号为 301,表示第一个字节的编号为 301,如果携带的数据长度为 100 字节,那么下一个报文段的序号应为 401。
- 确认号ack :期望收到的下一个报文段的序号。例如 B 正确收到 A 发送来的一个报文段,序号为 501,携带的数据长度为 200 字节,因此 B 期望下一个报文段的序号为 701,B 发送给 A 的确认报文段中确认号就为 701。
- 数据偏移 :指的是数据部分距离报文段起始处的偏移量,实际上指的是首部的长度。
- 确认 ACK :当 ACK=1 时确认号字段有效,否则无效,A第一次发送的连接请求ACK=0。TCP 规定,在连接建立后所有传送的报文段都必须把 ACK 置 1。
- 同步 SYN :在连接建立时用来同步序号。当 SYN=1,ACK=0 时表示这是一个连接请求报文段。若对方同意建立连接,则响应报文中 SYN=1,ACK=1。
- 终止 FIN :用来释放一个连接,当 FIN=1 时,表示此报文段的发送方的数据已发送完毕,并要求释放运输连接。
- 窗口 :窗口值作为接收方让发送方设置其发送窗口的依据。之所以要有这个限制,是因为接收方的数据缓存空间是有限的。
(17)、socket编程
(18)、算法:判断一个字符串是否是回文,一个序列先增后减,求峰值
(19)、二分查找
(20)、堆排序
(21)、在字符串中求最长数字子序列的长度
(22)、连续子序列的最大和
序列不一定都为整数哦,如果是负数可能后面会有正数补偿也说不定
(23)、微信的发送消息功能的测试:功能测试(图片、文字(大段文字)、小视频、语音)是否发送顺利?数据有没有丢失?有没有延迟?一个人发了100遍同样的数据能否发送成功?群发功能。
(24)、性能测试(并发度,响应时间,系统资源占用)
(25)、压力测试
(26)、兼容性测试(硬件兼容和软件兼容)
(27)、考虑多端登录消息的同步。
(28)、画了三条线,如何判断这哪两条从视觉的角度上相似度高,降采样、拟合、连续求斜率、聚类等
(29)、给一组文件,用代码对其中数据每300ms降采样一次,如果300ms点不存在。则放弃往前查找150ms,如果不存在,则放弃该组数据。
(30)、百度搜索每天那么大访问量,将所有检索过的字条都存放下来,如何快速判断新search的词是否搜索过?
(31)、写一段代码比较字符串s1,s2是否字符和字符出现次数一样?
(32)、从测试的角度看百度地图的离线包下载功能,从哪些方面测试?