个人面经整理浦发

C的万能指针
可以return 所有类型的指针

C语言编译过程
预处理阶段-------编译阶段-------汇编阶段--------链接阶段
预处理阶段:根据#开头,修改源.c程序,生成另一个.i作为扩展名的文件
编译阶段:将.i翻译成.s,包含一个汇编语言程序
汇编阶段:将.s翻译成一个机器语言指令,结果保存在.o文件中。.o是一个二进制的文件
链接阶段:负责得到一个可执行文件。

索引的优化

  1. Like的前导模糊查询不能使用索引

  2. Union、in、or都能命中索引,推荐使用in

  3. 负向条件查询不能使用索引,比如!=,<,>,not in, not exists, not like

  4. 建立联合索引的时候,区分度最高的字段在最左边

  5. 存在非等号和等号混合判断条件时,把等号条件的列前置

  6. 不要在索引上做计算

  7. Is null, is not null 无法使用索引

  8. 单表的索引最好在5个以内

  9. 在经常用作过滤的字段上建立索引

  10. Group by、order by字段上建立索引

  11. 不同值较少的字段不必要建立索引

  12. 在经常存取的列上建立复合索引

  13. 索引数目最多不要超过5个

  14. 复合索引中使用频率最高的放在前面

深拷贝浅拷贝
浅拷贝只是增加了一个指针指向已经存在的内存地址(如果原地址改变了,指针指向的对象也要改变)
深拷贝增加了一个指针并且申请了新的内存,使这个增加的指针指向这个新的内存

Const永远不能改变吗
Const限制一个变量不能被改变,产生静态作用,可以提高可靠性。
const关键字代表常量。它是一个变量限定符,用于修改变量的性质,使其变为只读状态。这意味着该变量,就像任何相同类型的其他变量一样使用,但不能改变其值。如果尝试为一个const变量赋值,编译时将会报错。

数据库中drop和delete和truncate的区别?

  1. Delete是每次删除表中的一行,将该行的删除操作作为事务记录在日志中方便进行回滚

  2. Truncate是一次性删除所有的数据,不把单独的删除操作记录在日志中,删除时不能回复的。执行速度快

  3. Truncate表后,表和索引所占的空间会恢复到初始的大小

  4. Delete不会减少表和索引所占的空间

  5. Drop会将表所占的空间全部释放掉

  6. Truncate只能对表,delete可以对视图和表

  7. Truncate和delete只删除数据,drop删除整个表

  8. Truncate和drop不能回滚,delete可以回滚

  9. 不再需要表,用drop

  10. 仍要保留表,删除所有记录用truncate

  11. 删除部分记录用delete

  12. (truncate和delete只删除数据,不删除表的结构,drop删除表的结构和数据)

  13. 速度drop>truncate>delete

  14. Delete不会自动提交,drop和truncate会自动提交

Delte和drop的区别
不再需要表,用drop,删除部分记录用delete
速度:drop>delete
Delete不会自动提交,drop可以自动提交
Drop会将表的空间全部释放掉,delete不会减少表和索引所占的空间
Delete可以回滚,drop不能回滚

数据库如何创建索引?
Create index indexname on mytable.
Drop index on mytable.
Show index.

了解操作系统么?
linux系统的操作有用过么?ll命令什么意思?
Ll是ls -l的别名,
列出文件的详细信息
Ls -a 列出目录下的所有文件

一个软件登录页面,点登录,超过5s没有响应?你如何设计测试用例?
软件测试设计测试用例遵循什么原则法则?
F12响应传参,
原则:

  1. 单个用例覆盖最小化原则

  2. 测试用例替代产品文档功能原则

  3. 单次投入成本和多次投入成本原则

  4. 测试结果分析和调试最简单化原则

  5. 每个测试需求至少有一个测试用例与之对应

  6. 每个测试用例包含的测试步骤尽量不超过10个

  7. 测试用例设计是应包含边界情况、等价类等方法

  8. 流程尽量实现每个路径的覆盖

  9. 测试用例应当根据测试范围进行评审检查,覆盖全部范围

  10. 公用性比较强的用例应当单独列出来,以便日后继续利用

  11. 注意命名规范

F12判断前后端问题
可以根据响应的值判断一些bug所在
(1)响应中没有数据,则是后端数据没有返回,前端展示为空,则为后端问题。例如:列表中新增一个数据,没有显示,通过请求中可以看到数据total为0,则是后端数据没有返回。

(2)响应中有数据,但是前端显示错误了,可以根据字段值判断是否前端显示中取错了字段显示,可以判断是前端问题。例如:前端显示内容错误了,把登录用户名显示了登录帐号,则可以在响应中看数据是否返回正确,返回正确而显示错误,则有可能是前端绑定字段错误。

(3)响应中有数据,但是跟自己操作的结果不一致,可以根据数据库查询,如果数据库中也没有记录,可能是代码有问题,没有记录你的操作。例如:注册了一个帐号,但是登录时提示帐号或密码错误,这就可以在数据库表中查看是否有注册的数据。

链接数据库一般要设置哪些东西
Db.properties

jdbc.username=root
jdbc.password=root
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/databasename

数据库常用端口(不会)
Mysql 3306
Sqlserver 1433
Oracle 1521

讲一讲事务的特性

  1. 原子性:事务的所有操作要么全部完成要么全部不完成,不会停滞在中间的某个环节。如果发生错误会回滚到事务开始前的状态
  2. 一致性:事务开始前后数据库完整性没有受到破坏
  3. 隔离性:事务执行过程中不应该受到其他事务的干扰,同一时间只有一个请求用于同一数据
  4. 持久性:事务完成之后,事务对数据库所做的更改就持久的保存在数据库中,不会被回滚

给你一个表怎么改某个人的地址
Update 表名 set 字段名=‘新内容’ where+条件
Update ‘runoob_tbl’ set ‘submission_date’=’2016-05-06’ where ‘runoob_id’=3;

常用哪些类型的索引
Fulltext hash btree rbtree
Fulltext
全文索引, 只有char varchar text 列上可以建立全文索引。解决针对文本的模糊查询效率较低的问题
Hash
类似于键值对的形式,适合最为索引。只在=和in条件下高效
Btree
将索引值按照一定的算法存入树形数据结构中。默认和最常用的索引类型
Rtree
范围查找

索引种类
普通索引
唯一索引(列值唯一,可以有null)
主键索引(列值唯一,不可以有null,表中只有一个)
组合索引(专门用于组合搜索)
全文索引(对文本的内容进行分词,搜索)
<直接创建索引>
– 创建普通索引
CREATE INDEX index_name ON table_name(col_name);
– 创建唯一索引
CREATE UNIQUE INDEX index_name ON table_name(col_name);
– 创建普通组合索引
CREATE INDEX index_name ON table_name(col_name_1,col_name_2);
– 创建唯一组合索引
CREATE UNIQUE INDEX index_name ON table_name(col_name_1,col_name_2);

<通过修改表结构创建索引>
ALTER TABLE table_name ADD INDEX index_name(col_name);

五、索引机制
1.为什么我们添加完索引后查询速度为变快?
传统的查询方法,是按照表的顺序遍历的,不论查询几条数据,mysql需要将表的数据从头到尾遍历一遍
在我们添加完索引之后,mysql一般通过BTREE算法生成一个索引文件,在查询数据库时,找到索引文件进行遍历(折半查找大幅查询效率),找到相应的键从而获取数据

2.索引的代价
2.1创建索引是为产生索引文件的,占用磁盘空间
2.2索引文件是一个二叉树类型的文件,可想而知我们的dml操作同样也会对索引文件进行修改,所以性能会下降

3.在哪些column上使用索引?
3.1较频繁的作为查询条件字段应该创建索引
3.2唯一性太差的字段不适合创建索引,尽管频繁作为查询条件,例如gender性别字段
3.3更新非常频繁的字段不适合作为索引
3.4不会出现在where子句中的字段不该创建索引

Sizeof
是C/C++的一个操作符,返回一个对象或者类型所占内存的字节数

Malloc
动态内存分配,申请一块连续的内存大小的区域,用void*类型返回分配的内存区域的地址。是一个指针型的函数,返回的指针指向该分配域开头的位置

Strcpy
C语言的标准库函数,返回值为char*。 把含有\0的字符串复制到另一个地址空间

链表排序
void ListSort_2(Node **head)
92 {
93 Node *p = NULL;
94 Node *q = NULL;
95 Node *t = NULL;
96
97 if(*head == NULL || (*head)->next == NULL)
98 {
99 return;
100 }
101
102 for(p = *head; p != NULL; p = p->next)
103 {
104 for(q = *head; q->next != NULL; q = q->next)
105 {
106 if(q->data > q->next->data)
107 {
108 swap(q->data, q->next->data);
109 }
110 }
111
112 }
113 }

冒泡排序直接交换数据

三次握手

栈队列优缺点

New和malloc的区别

  1. New是在自由存储区为对象分配内存,malloc是在堆上动态分配内存
  2. New分配成功时返回的是对象的指针,malloc返回的是void*,还需要强制转化
  3. New分配内存失败时会抛出异常,malloc失败时返回null
  4. New无需指定内存块的大小,malloc需要显式指定内存的尺寸
  5. New和delete可以重载,malloc和free不能重载
  6. New是调用构造函数,malloc不调用

索引说一下
SQL性能低下怎么解决

cpp的list和vector

.面向对象三大特性
5.讲一下虚函数,静态函数
6.内存分配,堆区栈区

还问了linux指令

C++中有哪些数据结构

数据库中count(1) count(*) count(列名)的区别

数据库中行锁
11.数据库查找某一行末尾为0的数据
12.遇到bug怎么调试?
为什么这么多银行选择来浦发/你的职业规划/最近浦发上一款新产品你知道吗/对互联网有热情吗

增查删改等SQL命令
原子性的实际应用场景
常用的排序算法以及口述快排的实现思路

  1. 用到事务了吗?事务的特性;
  2. Linux命令,用过vi吗;
  3. 怎么删除一行,怎么在行末尾写东西;
  4. 基本数据类型;
    1.输入一个数字,输出以这个数字为长度的回文数,比如输入6,输出123321,输入7,输出1234321;
    2.只有1,3,5,7构成的奇数,输入一个数,代表位数,输出对应的奇数个数,比如输入1,输出4,因为{1,3,5,7};
    3.输入一个字符串,按ASCII码倒排
    从客户角度出发谈谈随着5G时代到来,区块链、云计算、大数据、人工智能这些技术在银行的应用
    用过什么数据库、数据库的左连接的思想及其实现语句、线程的状态、什么是平衡二叉树、什么是红黑树、常用的排序算法,说一下快排
    对浦发的了解
    优缺点
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值