招商银行 测试开发工程师 视频面经

招商银行 测试开发工程师 视频面经

一、招行网络科技 C++工程师

  1. C++内存分布

  2. 多进程和多线程的区别
    多进程:在同一个时间里,同一个计算机系统中如果允许两个或两个以上的进程处于运行状态,这便是多进程,也称多任务

    多线程:多线程是一种执行模型,它允许多个线程存在于进程的上下文中,以便它们独立执行但共享其进程资源
    二者的区别:

    在这里插入图片描述

  3. 多线程的同步
    参考文章:四种线程同步(或互斥)方式小结
    1.线程同步:协同步调,按照预定的执行顺序进行运行。线程通过同步建立执行顺序的关系
    2.线程互斥:对共享的进程资源,在各个线程访问时的排他性。当多个线程都要使用某一进程系统资源时,进程资源最多允许一个进程使用,其他线程必须等待,知道占用资源者释放该资源
    3.线程同步的方式:
    临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问
    互斥对象:互斥对象和临界区很像,采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限
    信号量:信号量也是内核对象。它允许多个线程在同一时刻访问同一资源,但是需要限制在同一时刻访问此资源的最大线程数目
    事件对象:通过通知操作的方式来保持线程的同步,还可以方便实现对多个线程的优先级比较的操作

  4. inline函数
    参考文章:inline函数的总结

  5. 从cpp文件到可执行文件的过程,内存泄漏和野指针并且如何避免
    参考文章:
    野指针和内存泄漏以及内存溢出总结
    什么是野指针和内存泄漏?如何避免野指针
    C++中如何避免内存泄漏?

  6. 线程死锁及如何解决


  7. MySQL数据库面试题(2020最新版)

  8. 算法题:计算一个数组中除自身外的其它元素之和,返回一个数组, 比如:输入[1 2 3]输出[2+3 1+3 1+2]

二、招行网络 测试开发师
1.自我介绍

2.项目、问一下担任了什么,解决了什么问题

3.代码题:对字符串统计字母出现个数,并以字符大小排序,然后以字符+出现次数输出,如[asda],输出[a2d1s1],只写出了利用HashMap遍历存了字符和个数。

4.LINUX会不会用

5.数据库用没用过(MySQL),MySQL的默认端口是多少(3306)

6.锁(说了知道单例模式的双重校验锁模式),问知不知道数据库里的锁(说了个行锁和行间锁组成next key lock避免幻读)

7.三次握手(讲了三次握手的意义,和为什么不能两次握手)

三、招行网络 JAVA工程师

1.==和equal的区别 (JAVA)
(1)= = 表示 判断2个变量或对象实例是否指向同一个内存空间,duequals()表示 判断2个变量或对象实例所指向的内存空间的值是否相同
(2)= = 表示 对内存地址进行比较,equals()表示 对字符串的内容进行比较
(3)= = 表示引用是否相同,equals() 表示值是否相同

2.hashMap的底层(JAVA)

3.数组和链表的区别

4.设计模式了解吗?(回答了单例、工厂、装饰者、适配器),能手写单例模式的几种代码吗

5.多线程了解吗?如何创建线程?为什么要创建线程?(懵了,我说在并发里需要用到多线程提高效率,不知道是不是)
为什么要创建线程:为什么使用多线程?
如何创建线程:
(1)继承Thread类,重写run()方法。然后直接new这个对象的实例,创建一个线程的实例,再调用start()方法启动线程
(2)实现Runnable接口,重写run()方法。然后调用new Thread(runnable)的方式创建一个线程,再调用start()方法启动线程
(3)实现Callable接口,重写call()方法。Callable是类似于Runnable的接口,是属于Executor框架中的功能类。是JDK1.5中引入的新特性

四、招行网络 C++工程师

1.虚函数怎么使用,构造函数和析构函数能用虚函数吗?

2.成员函数和友元函数,友元函数能访问类的方法吗?
友元函数:指不是类的成员但能访问类的非公有成员的函数。目的是让其他类的函数访问类的私有变量。可以用于:(1)运算符重载;(2)两个类之间共享数据。调用方式:友元函数不是类的成员函数,调用时不通过对象,可以在类内声明,类外定义,声明前加friend关键字。
成员函数:描述类的行为,是程序算法的实现部分,像构造函数、析构函数、都是累的成员函数,友元函数不是成员函数。
友元函数与成员函数的区别:
相同点:(1)对类的存取方式相同,可以直接取类的任何存取控制属性的成员;(2)可以通过对象存储形参、函数体中该类类型对象的所有成员
不同点:(1)成员函数有this指针,友元函数没有;(2)友元函数不能被继承

3.Http的状态码

4.浏览器输入URL,然后会发生什么?页面渲染怎么做?

5.C++的STL
STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。STL从广义上分为三类:algorithm算法、container容器和iterator迭代器。所有代码都采用了模板类和模板函数的方式,提供了更好的代码重用机会。(1)算法部分:,,;(2)容器部分:,,,,,,;(3)迭代器:,,

6.数据结构有哪些

7.野指针

五、招行网络 C++工程师

1.索引

2.静态链接库,动态链接库
动态链接库:(Dynamic Linkable Library, DLL)提供一些可以直接使用的变量、类和函数。是程序运行时加载的库。DLL是目标文件的集合,目标文件在DLL中的组织方式是按照特殊方式形成的。 别名:libxxx.so
静态链接库:在程序开发过程中发生的,在链接阶段,将源文件中用到的库函数与汇编生成的目标文件.o合并生成可执行文件。别名libxxx.a

3.代码题:二分查找某数值最后的位置

4.代码题:判断黄金数

六、招行网络 C++工程师

1.介绍TCP和UDP,举例应用场景

2.静态连接库,动态链接库是什么

3.hash、链表、二叉树时间复杂度分析,极端情况分析
哈希函数:在记录的存储位置和它的关键字之间建立一个确定的对应关系F,使每一个关键字对应一个存储位置,即存储位置 = F(Key)。因此在查找过程中只需要通过哈希函数F找到给定值Key的映射F(Key)。采用哈希函数将记录存储在一块连续的存储空间中,这块连续的存储空间称为哈希表。
二叉树时间复杂度:O(nlogn),在树中查找一个数字,第一次在根节点判断,第二次在第二层节点中判断,以此类推,树的高度就是判断次数。极端情况:查找的点位于树的最底层的叶子结点,则查找的时间复杂度为二叉树的高度

4.代码题:链表查找倒数第N个节点

5.C++的多态怎么实现的

6.代码题:常数空间实现回文链表判断
思路:设置fast指针和slow指针,fast每次走两步,slow每次走一步。slow走到链表的中间节点后,对slow->next节点进行reverse。然后将前半段链表和后半段reversed的链表一一对比,若每个点都相等则返回True

七、招行网络 测试开发工程师

1.C++ static
static静态数据:(1)是C/C++中的修饰符,用来控制变量的存储方式和可见性。在函数内部定义的变量的值保留至下次该函数的调用;(2)静态数据就是一个数据对象,它为整个类服务而不是为某个对象服务,同时又不破坏类的封装性,即要求成员定义在累的内部,对外不可见的一种数据;(3)static 修饰的静态局部变量只执行初始化一次,而且延长了局部变量的生命周期,直到程序运行结束以后才释放

2.引用和指针

3.C++的优点与C相比
更便捷开发,易封装、移植、复用

4.C++的多态

5.多态类型

6.静态链接库与动态链接库

7.内存清理
(1)new, delete;(2)malloc和free;(3)调试DEBUG版本程序,会有内存泄漏提示;(4)智能指针,可以自动释放内存

8.什么是预编译
预编译:(1)预处理,是做些代码文本的替换工作;(2)处理以#开头的指令,比如拷贝#include包含的文件代码,#define宏定义的替换,条件编译等。包括宏定义,文件包含,条件编译。
何时需要预编译:使用不经常改动的大型代码体;程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项

9.HTTP协议的特点
HTTP: 是一个属于应用层的面向对象的协议,HTTP 协议一共有五大特点:1、支持客户/服务器模式;2、简单快速;3、灵活;4、无连接;5、无状态

10.代码题:地下车库三类车:二轮、三轮、四轮共计50辆(每类至少一辆),轮数150,计算有多少种可能

11.代码题:手写一个strcpy

12.inline函数和宏的区别
宏定义: #define命令是C语言中的一个宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本
inline函数:为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,特别的引入了inline修饰符,表示为内联函数。
宏定义和inline函数的区别
(1)内联函数在编译时展开,宏在预编译时展开;
(2)内联函数直接嵌入到目标代码中,宏是简单的做文本替换;
(3)内联函数有类型检测、语法判断等功能,而宏没有;
(4)inline函数是函数,宏不是;
(5)宏定义时要注意书写(参数要括起来)否则容易出现歧义,内联函数不会产生歧义;

八、招商银行 测试开发工程师

1.自我介绍
2.项目介绍
3.i++和++i的区别
4.static及局部变量的作用
5.extern
6.指针的指针
7.堆与栈的区别
8.get与post的区别及应用场景
9.五层网络模型
10.每层的协议
11.tcp与udp的协议有那些
12.黑盒测试与白盒测试
13.黑盒测试方法
14.测试一把椅子
15.define的作用

九、招商银行 测试开发工程师

1、自我介绍
2、对学校做过的项目提问
3、SSM框架介绍
4、工厂模式
5、用到的注解
6、TCP/IP模型每层的协议
7、http的get与post方法
8、类和接口区别
9、测试流程
10、实习项目
11、手撕代码(挺简单的,数组中0的元素放在后面,其余位置不变)
12、对上面的代码进行输入测试

  • 1
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值