科大讯飞面试题

元组和list区别;字典的展开顺序和存放顺序是一致的吗?

数据集train set ,val set,test set的意义;develop set和test set可以混用吗

1、音频特征分析有哪些,特征的作用

Excel多条件查找;三次握手、tcp四次挥手;timewait这个状态是客户端还是服务端; 数据库左关联和右关联

 怎么查看是否用到了索引;什么时候不会用到索引;进程和线程的区别;堆和栈的区别;redis存储登陆信息,和session共享怎么实现的;OSI七层模型;TCP和UDP的区别;Linux命令 怎么查看一个进程 ,怎么杀死一个进程,kill -9 和  kill -15 的区别;面向对象和面向过程的区别,面向对象有什么优势;线程安全的集合类有哪些;数据结构问了链表优缺点,应用场景;有没有接触过测试框架;数据库语句,一个成绩表查询总分最大的学生的id;过拟合,欠拟合介绍一下;指针和引用的区别;

1. python 常用模块

数组的数据处理方面是numpy,os对操作系统进行操作,logging模块输出运行日志,设置输出日志的等级、日志保存路径、日志文件回滚等,数学模块math,网络用pytorch中的nn.model,matplotlib画图,Seaborn画hot图.

2. Python装饰器是怎么回事

python装饰器本质上就是一个函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外的功能,装饰器的返回值也是一个函数对象(函数的指针)。装饰器函数的外部函数传入要装饰的函数名字,返回经过修饰后函数的名字;内层函数(闭包)负责修饰被修饰函数。从上面这段描述中我们需要记住装饰器的几点属性,以便后面能更好的理解:

实质:是一个函数

参数:是你要装饰的函数名(并非函数调用)

返回:是装饰完的函数名(也非函数调用)

作用:为已经存在的对象添加额外的功能

特点:不需要对对象做任何的代码上的变动

应用装饰器的场景:插入日志、性能测试、事务处理、权限校验。

3. 深度学习的框架

Keras,集成度更高,利用keras搭建基本的DNN和LSTM网络。Pytorch训练深度复卷积网络。

4. 测试框架

模块化框架,函数库结构框架,关键字驱动测试框架,数据驱动测试框架,混合型框架

5. 性能测试

关注时间性能(向目标服务器发送请求,服务器返回响应数据的时间)和空间性能(如cpu占用,内存占用,磁盘消耗)。

性能测试包括:

1) 负载测试:通过在被测系统上不断加压,直到性能指标达到极限,例如“响应时间”超

过预定指标或都某种资源已经达到饱和状态。

2) 压力测试测试系统在一定饱和状态下,例如cpu、内存在饱和使用情况下,系统能够

处理的会话能力,以及系统是否会出现错误。

3) 并发测试:通过模拟用户并发访问,测试多用户并发访问同一个应用、同一个模块或者

数据记录时是否存在死锁或其者他性能问题。

4) 配置测试:配置测试方法通过对被测系统的软\硬件环境的调整,了解各种不同对系统

的性能影响的程度,从而找到系统各项资源的最优分配原则。

5) 可靠性测试:在给系统加载一定业务压力的情况下,使系统运行一段时间,以此检测系

统是否稳定。

6. 网站测试的方法,设计测试用例

7. Linux系统,用过的版本

8. 数据库用过的增删改查命令

查:单表查询用select关键字from表名,order by排序(DESC降序,ASC升序),group by分组查询(having子句分组后筛选),筛选字段不重复的值distinct。多表查询:左连接left join,查询出左表中(含有null的值)与右表中的对应,右连接查询出右表中(含有null的值)与左表中的对应

增:insert into...set...插入

改:update表名

删:delete,truncate

9. delete,truncate的区别:

truncate不能加where;delete能加where

truncate删除表后,再加入数据是从1开始;delete删除表后,再加入数据是从上次断点开始。

truncate不能回滚,无返回值;delete可以回滚,有返回值。

10. Osi七层模型,五层模型分别是啥

11. Tcp和udp区别

UDP的特点如下:无链接,不可靠,面向报文的,没有拥塞控制,UDP支持一对一、一对多、多对一和多对多的交互通信,UDP的首部开销小,只有8字节。适合实时流媒体的传输。

TCP的特点:面向连接的,一对一,可靠交付,流量控制,拥塞控制面向字节流。头部20字节,开销大。适合对可靠性要求高的FTP,HTTP。

12. Tcp报文首部

源端口,目的端口,序号(本段数据第一个比特的序号),确认号(期望的下一个数据第一个比特的序号),数据偏移(本段数据的第一个比特到整个tcp报文段起始处的距离,再除以8),标志字段(SYN,ACK,PSH(尽快交付),RST(复位,重新建立连接)),接收窗口,校验和。

13. Tcp流量控制和拥塞控制怎么实现

流量控制:接收窗口告知发送方海域多少缓冲区可以接收数据,发送窗口的大小要小于接收窗口。

拥塞控制:慢启动,拥塞避免,快恢复。慢启动时拥塞窗口由1翻倍增加,阈值设为上次发生拥塞时拥塞窗口的一半,拥塞窗口达到阈值,进入拥塞避免状态,拥塞窗口每次增加1,若连续收到三个相同ACK会进入快恢复状态,从拥塞窗口的一半开始进入拥塞避免状态。

14. 接收窗口怎么得到的

Tcp的报文头包含了窗口字段(2字节,告知本人的接收窗口剩余空间的字节数),接收窗口包含应用程序未检索到的数据以及已接收但尚未确认的数据

16. A为在一个子网中的主机,与交换机相连接,B为在另一个子网中的主机,也与交换机相连接,A与B通信的过程。

我的想法:不同子网中主机通信,需要路由器互联。首先在子网中,A应该先通过交换机找到子网内的边界网关,已知其ip地址,先通过查找交换机本地缓存中有无其mac地址,没有的话通过ARP协议,广播其ip,等待边界网关响应,得到子网内的边界网关的MAC地址后利用交换机可以隔离冲突域的优势,找到可以抵达边界网关的MAC地址的交换机的端口,把数据发送到这个端口后,送到边界网关。通过路由寻址另一个子网的ip地址,在另一个子网内也进行地址解析和mac寻址。

17. ARP协议包含什么

目的ip和对应的目的mac

18. http报文格式,get,post,put是什么,区别是什么

请求行(字段:方法,url,http版本),首部行,实体

get,post,put是请求行中的方法,get和post都是请求资源,put是上传资源 其中get方法实体为空,get+实体=post ; get用url触发请求,长度受url限制,post请求由表单提交,长度不受限。

19. MSS和MTU

MSS(最大报文段长度)用于在TCP连接建立时,收发双方协商通信时每一个报文段所能承载的最大数据长度(不包括文段头)。在传输层,报文分片是MSS。

MTU(最大传输单元)用来通知对方所能接受数据服务单元的最大尺寸,说明发送方能够接受的有效载荷大小。在数据链路层。数据报分片成MTU。

20. 传输层数据报分片

TCP三次握手时会商量好MSS值,其实也是根据下层的MTU值确定的。MSS指定了TCP数据包的大小,TCP流数据会按照MSS大小进行“打包”,打包后加上IP报头后就是一个IP报文。IP报文在传输过程可能会分片。IP报文分片到对端后会在IP层进行组装,组成一个完整的IP报文(也是一个TCP数据包)后上传到传输层。

21. Ip地址分类,私网地址

A类地址:0.0.0.0-127.255.255.255.255

B类地址:128.0.0.0_191.255.255.255

C类地址:192.0.0.0-223.255.255.255

D类地址:224.0.0.0-239.255.255.255

E类地址:240.0.0.0-255.255.255.255

私有地址:

A类:10.0.0.0-10.255.255.255

B类:172.16.0.0-172.31.255.255

C类: 192.168 .0.0-192.168.255.255

22.划分等价类的6条原则: 

    (1)在输入条件规定了取值范围或值的个数的情况下,可以确立一个有效等价类和两个无效等价类 

    (2)在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可以确立一个有效等价类和一个无效等价类 

    (3)在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类 

    (4)在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类 

    (5)在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则) 

    (6)在确知已划分的等价类中,各元素在程序处理中的方式不同的情况下,则再将该等价类进一步地划分为更小的等价类

23.等价类划分法应如何取值?与边界值法取值有何不同? 

(1)若输入条件规定了取值范围,且取值范围上、下限之间的数据是有意义的数据,则可以确立一个有效等价类和两个无效等价类。 

(2)若输入条件规定了“必须如何”的条件,则可确立一个有效等价类和一个无效等价类。 

(3)若输入条件是一个布尔型量,则可以确定一个有效等价类和一个无效等价类。 

(4)若输入条件是一个逻辑型量,则可为每一个输入值确立一个有效等价类且软件要对每个输入值分别进行处理,则可为每一个值确立一个有效等价类,此外还要针对这组值确立一个无效等价类。 

2022/7/23 科大讯飞算法岗笔试_笔经面经_牛客网 (nowcoder.com)

2018科大讯飞的Java笔试题附带参考答案_牛客博客 (nowcoder.net)

三角形:

class Solution {
public:
    int triangleNumber(vector<int>& nums) {
        int count = 0, size = nums.size();
        sort(nums.begin(), nums.end());
        for (int i = size - 1; i >= 2; i--) {
            int left = 0, right = i - 1;
            while(left < right) {
                if (nums[left] + nums[right] > nums[i]) {
                    count += (right - left);
                    right--;
                }
                else {
                    left++;
                }
            }
        }
        return count;
    }
};
 

两个字符串的最长公共子串

#include<iostream>
#include<string>
using namespace std;
int main()
{
    string a, b;
    while (cin >> a >> b)
    {
        if (a.size() > b.size())
            swap(a, b);
        string str_m;//存储最长公共子串
        for (int i = 0; i < a.size(); i++)
        {
            for (int j = i; j < a.size(); j++)
            {
                string temp = a.substr(i, j - i + 1);
                    if (int(b.find(temp))<0)
                    break;
                else if (str_m.size() < temp.size())
                    str_m = temp;
            }
        }
        cout << str_m << endl;
    }
    return 0;
}

求字符串子序列:

#include<stdio.h>
#include<string.h>
#define N 1000005
#define mod 1000000007
#define ll long long
int a[N],b[N];
ll dp[N];
int main()
{
    int n;
    while(scanf("%d",&n)!=EOF)
    {
        int maxx=-1;
        for(int i=1; i<=n; i++)
        {
            scanf("%d",&a[i]);
            if(a[i]>maxx)
                maxx=a[i];
        }
        for(int i=0; i<=maxx; i++)
            b[i]=-1;
        b[a[1]]=1;
        dp[1]=1;
        for(int i=2; i<=n; i++)
        {
            if(b[a[i]]==-1)
                dp[i]=(2*dp[i-1]+1)%mod;
            else
                dp[i]=(2*dp[i-1]-dp[b[a[i]]-1]+mod)%mod;//如出现负值,处理
            b[a[i]]=i;
        }
        printf("%lld\n",dp[n]%mod);
    }
    return 0;
}

C++递归实现二分查找

#include <iostream>

using namespace std;

//x为目标数据、left为数组第一个元素下标、right为数组最后一个元素下标
int recurBinarySearch(int* p, int x, int left, int right);

int main()
{
    int array[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
    int x = 7;
    int result;
    result = recurBinarySearch(array, x, 0, 9);
    if (result == -1)
        cout << "没找到" << endl;
    else
        cout << "在array[" << result << "]里找到" << x << endl;
}

int recurBinarySearch(int* p, int x, int left, int right)
{
    //基线条件
    if (left == right)
        return left;

    //递归条件
    if (left < right)
    {
        int mid = (left + right) / 2;  //得到中间值
        if (x < p[mid])  //小于,改变right
            return recurBinarySearch(p, x, left, mid - 1);
        else if (x > p[mid])  //大于,改变left
            return recurBinarySearch(p, x, mid + 1, right);
        else
            return mid;  //得到x
    }
    return -1;
}
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,我无法提供关于科大讯飞的具体面试问题。但是,我可以为您提供一些关于Java面试的一般性问题和答案,希望对您有所帮助。 1. 什么是Java? Java是一种面向对象的编程语言,具有跨平台的特性。它被广泛应用于开发各种类型的应用程序,包括Web应用程序、移动应用程序和企业级应用程序。 2. Java的特点有哪些? - 简单易学:Java的语法相对简单,易于理解和学习。 - 面向对象:Java支持面向对象的编程范式,具有封装、继承和多态等特性。 - 跨平台性:Java程序可以在不同的操作系统上运行,只需在目标平台上安装Java虚拟机(JVM)。 - 安全性:Java提供了安全机制,如内存管理和异常处理,以防止潜在的安全漏洞。 - 多线程:Java支持多线程编程,可以同时执行多个任务。 3. 什么是Java虚拟机(JVM)? Java虚拟机是Java程序的运行环境,它负责将Java字节码转换为特定平台的机器码。JVM还提供了内存管理、垃圾回收和安全性等功能。 4. 什么是Java的垃圾回收机制? Java的垃圾回收机制是自动管理内存的一种机制。它通过检测不再使用的对象,并释放它们所占用的内存空间,以避免内存泄漏和资源浪费。 5. 什么是Java的异常处理机制? Java的异常处理机制用于处理程序运行过程中可能出现的错误或异常情况。通过使用try-catch语句块,可以捕获并处理异常,以保证程序的正常执行。 6. 什么是Java的多线程编程? Java的多线程编程允许程序同时执行多个任务。通过创建线程对象并调用其start()方法,可以实现并发执行多个任务,提高程序的性能和响应能力。 7. 什么是Java的集合框架? Java的集合框架是一组用于存储和操作数据的类和接口。它提供了各种数据结构,如列表、集合、映射等,以及用于操作和遍历集合的方法。 8. 什么是Java的反射机制? Java的反射机制允许程序在运行时动态地获取和操作类的信息。通过反射,可以获取类的属性、方法和构造函数等信息,并在运行时调用它们。 9. 什么是Java的IO流? Java的IO流用于处理输入和输出操作。它提供了各种类和方法,用于读取和写入数据到文件、网络和其他设备。 10. 什么是Java的数据库连接(JDBC)? Java的数据库连接(JDBC)是一种用于连接和操作数据库的API。它提供了一组类和方法,用于执行SQL查询、插入、更新和删除等操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值