♥复试第八天
深度学习:项目三
面经:
0.介绍bert模型的整体结构?
embedding->encoder->输出
1. embedding由哪些部分构成:
token embedding,position embedding ,segment embedding;
2. encoder层的作用是啥?由哪些部分组成?
通过信息交互,获得上下文信息
FFN,多头注意力机制,残差连接
3.介绍一下自注意力机制?
作用是让每个序列token 和其他序列token建立连接。做法是将输入映射为Q,K,V,向量,根据Q,K点积得到相关性分数,÷根号d缩放,(防止点积过大造成梯度不稳定问题)最后经过softmax得到权重,对V加权求和,从而得到上下文信息。
4.介绍多头注意力机制?
多头注意力机制就是在多个子空间内并行进行上述自注意力机制,输出结果进行拼接得到更丰富的结果。
5.介绍FFN层?
它就是由两个全连接层中间夹着一个激活函数组成的,负责信息转换和抽象。
6. bert全称和transformer的关系是啥?
bidirectional encoder representation from transformrs
bert 继承于transformer并且能同时从上下文左右两个方向理解文本。
7. 什么是bert预训练?
掩码模型预测和下一句预测。
8,本项目使用了什么损失函数?
交叉熵损失函数。
9。什么是迁移化学习:
利用大规模语料上训练好的模型做初始模型,在目标数据上进行微调。
C笔试
1.身份证长度是18,其中第7至14个数字是生日,编写完整程序判断2个身份证号的出生日期先后。
使用字符串型数组,一次性输入一串字符后会自动填充到数组各个位置;
数组名就是数组的首地址
#include <stdio.h>
#include<stdlib.h>
int judge(char a[19], char b[19]) {
for (int i = 6; i < 14; i++) {
if (a[i] > b[i]) return -1;
if (a[i] <b[i]) return 1;
}
return 0;
}
int main() {
char a[19] = { 0 }, b[19] = { 0 };
printf_s("请输入第一个人的身份证号");#输入的号码会自动对应数组每个元素
scanf_s("%s",a,19);#数组名就是地址
printf_s("请输入第二个人的身份证号");
scanf_s("%s",b,19);
int result = judge(a, b);
if (result == -1) printf_s("第二个人的生日在前");
if (result == 1) printf_s("第一个人的生日在前");
if (result== 0) printf_s("两人生日一样");
return 0;
}
2.寻找链表最大节点并移动
编写完整程序,一个链表,找出其中数据项最大的结点,然后将其移动到链表尾部(结 点node由整型data和节点指针next构成),不允许申请新的结点。
#include <stdio.h>
#include<stdlib.h>
typedef struct LNode{
int num;
struct LNode* next;
}LinkList;
int main() {
LinkList* head = (LinkList*)malloc(sizeof(LinkList));
head->next = NULL;
LinkList* p, * q,*pre,*now,*pre1,*m;
int max=-9999;
q = head;
int mm;
printf_s("请输入键入的数字");
for (int i = 0; i < 4; i++) {
scanf_s("%d", &mm);
m= (LinkList*)malloc(sizeof(LinkList));
m->num = mm;
q->next = m;
q = m;
}
p = head->next;
pre1 = head;
while (p != NULL) {
if ((p->num) > max) {
max = p->num;
now = p;
pre = pre1;
}
p = p->next;
pre1 = pre1->next;
}
pre->next = now->next;
q->next = now;
now->next = NULL;
printf("调整后链表如下:\n");
p = head->next;
while (p != NULL) {
printf_s("%d ", p->num);
p = p->next;
}
return 0;
}
这个代码一直没跑出来,u1s1真的太复杂了,需要初始化的东西太多
3.快速排序
编写一个函数,把整数序列分成两个部分,使得左边部分都不大于右边部分, 不需要排序。(考察的是快速排序的部分)
int huafen(int L, int R, int a[]) {
int qivot = a[L];
while (R > L) {
while (a[R] > qivot && R > L) R--;
a[L]=a[R];
while (a[L] < qivot&& R>L) L++;
a[R] = a[L];
}
a[L] = qivot;
return L;
}
int main() {
int L, R;
int a[10];
huafen(L, R, a);
return 0;
}
4.二路归并
有两个整数数组A和B,它们分别有m、n个整数。并且都是按单增序列,将B数组插入A数组中还是单增序列。
int guibin(int a[], int b[],int M,int N) {
int am = 0;
int bm = 0;
int cm = 0;
int c[100];
while (am < M && bm < N) {
if (a[am] > b[bm]) {
c[cm++] = b[bm++];
}
else {
c[cm++] = a[am++];
}
}
while (am < M) c[cm++] = a[am++];
while (bm < N) c[cm++] = b[bm++];
}
int main() { #这里仅演示用法,不定义初始值
guibin(a, b, m, n);
return 0;
}
5. 链表逆置,链表按顺序插入
两个递增有序整数数列链表La和Lb,将他们合并后,变成一个新的链表,要求该链表递减排序。
传参数时传头指针,就代表整个链表
#include <stdio.h>
#include<stdlib.h>
typedef struct LNode{
int num;
struct LNode* next;
}LinkList;
int Unit(LinkList*a, LinkList*b,int M,int N) { #传指针即可,就代表一个链表
LinkList* am =a;
LinkList*bm =b;
LinkList* c= (LinkList*)malloc(sizeof(LinkList));#只能离散的申请空间,不可以申请大片连续空间
c->next = NULL;
LinkList*cm =c; #对新建链表采用尾插法,需要指针c指向最后一个元素
while (am!=NULL && bm!=NULL) {
LinkList* newnode = (LinkList*)malloc(sizeof(LinkList));
if (am->num >bm->num) {
newnode->num = bm->num;
bm = bm->next;
}
else {
newnode->num = am->num;
am = am->next;
}
c->next = newnode;
newnode->next = NULL;
cm = newnode;
}
while (am !=NULL ) {
LinkList* newnode = (LinkList*)malloc(sizeof(LinkList));
newnode->num = am->num;
am = am->next;
newnode->next = NULL;
cm->next = newnode;
cm = newnode;
}
while (bm != NULL) {
LinkList* newnode = (LinkList*)malloc(sizeof(LinkList));
newnode->num = bm->num;
bm = bm->next;
newnode->next = NULL;
cm->next = newnode;
cm = newnode;
}
}
void reverse(LinkList* a) {
LinkList* head= (LinkList*)malloc(sizeof(LinkList));
head->next = NULL;
LinkList* p = a->next;
while (p != NULL) {
a ->next= p->next;
p->next=head->next ;
head->next = p;
p = a->next;#p要及时更新
}
}
链表是真复杂啊一堆指针啊啊啊啊
数据库
面经
-
DBMS支持的三种数据模型:层次模型、网状模型、关系模型的特点是什么?层次模型:数据组织像一棵倒挂的树,有且仅有一个根节点;网状模型:数据组织成网状,一个节点可以有多个父节点;关系:所有数据都放在一张张表里(行是记录,列是属性)如下图:

-
什么是数据独立性?包括哪两种?
数据独立性表示应用程序与数据库中存储的数据不存在依赖关系,包括逻辑数据独立性和物理数据独立性。当数据库的存放方式或表结构改变时,应用程序不用改 -
困死了不看了
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)