Skip to content

404notfoundqjx/Spring-Recruitment

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

76 Commits
 
 
 
 

Repository files navigation

春招


前言

此项目用于分类记录面试题以及自己的面试经历

操作系统

  • gdb的一些指令

设断点 b 删断点 d
单步执行:s n si ni
打印变量的值 p
显示汇编代码 display
显示寄存器的值 i r
打印栈信息i f 或者是bt(backtrace) 打印当前函数调用栈的所有信息

  • 什么是进程、什么是线程

进程是拥有资源的基本单位、线程是CPU调度的基本单位;
进程是一段代码在某个数据集上的执行,是一个动态实体:
因创建而产生,因调度而运行,因等待资源或事件而等待,因完成任务而撤销,是一个程序在一定数据集上运行的全部动态过程;
线程是进程下能独立运行的更小的单位,线程的创建、终止、切换较快,线程之间共享资源,但不拥有系统资源;

  • linux中top各参数的意义
  • 什么是内存泄露,怎么判断是内存泄露
  • 线程间如何通信
  • 讲一下线程状态转移图
  • 进程间通信方式
  • 怎么查看进程的内存

计算机网络

  • 三次握手

SYN = 1 | SEQ = x、 SYN = 1 ACK = 1 | ACKNUM = x + 1 SEQ = y、 ACK = 1 | ACKNUM = y + 1 建立连接的时候,服务器把SYN和ACK放在一个包内

  • 四次挥手

FIN = 1| SEQ = x、ACK = 1| ACKNUM = x + 1、FIN = 1 | SEQ = y、ACK = 1| ACKNUM = y + 1
一端发送FIN包之后,处于半关闭状态,此时仍然可以接收数据包。如果有一端收到FIN包之后,需要回复对该包的ACK包,但可能这个时候还有数据没有发完,所以把剩下的数据发完之后,在发送一个FIN包,断开这个方向的连接
TIME_WAIT:第四次挥手,也就是客户端发出的ACK包可能丢失,客户端会等待一定时间(2个MSL,两个报文的存活最长时间),这个时间内没有收到服务器要求重传ACK的报文,则认定服务器正确接收并已经断开连接了

  • UDP

不可靠在于UDP没有 确认 和 超时重传机制,没办法处理丢包的情况
也没有序列号的机制,没办法处理数据包乱序的情况;
无连接表示并不是通过握手创建连接

  • TCP/UDP 主要区别、用在哪里

TCP:可靠的有连接 面向字节 传输效率低;UDP:不可靠无连接 面向报文 传输效率高
TCP: SMTP、TELNET、HTTP、FTP;UDP:DNS、DHCP、RIP、即时通讯、在线视频

  • http状态码含义

200 – 请求成功 301 – 资源被永久转移 404 - 请求的资源不存在 500 – 内部服务器错误

  • http请求过程做一个描述
  • post和get的区别

本质上并无差别,都是TCP连接;
GET参数通过URL传递,也就是放在 开始行,POST的内容放在 请求主体;
GET产生一个TCP包,POST产生两个(头部header 和 数据data);

  • cookie和session的区别

session是服务器端保存的一个数据结构,用来跟踪用户的状态;
cookie存储在客户端,是一串“识别码”,服务端可以通过根据cookie在数据库中该用户的活动记录。cookie是实现session的一种方式;
由于http是无状态协议,所以服务器需要一种机制来记录用户的状态,因此服务器要为特定的用户创建特定的session;

  • 对http协议了解哪些内容

C/S模式
无连接:HTTP协议本身是无连接的,但使用了TCP连接
无状态:对事件处理没有记忆能力,同一个客户第二次访问同一个服务器上的页面,服务器响应与第一次响应相同

  • http协议组成,get的url每部分划分及名称

开始行、消息报头(存放浏览器、服务器等信息)、请求正文

  • 无法访问一个网站可能的原因
  • DHCP工作原理
  • ARP工作原理

通过目标IP查询目标设备MAC(发送过程、ARP缓存表、广播)

  • 主机访问网站过程
  • SPF算法原理、OSPF路由协议、OSPF几种特殊区域、LSA类型和内容
  • HTTP1.1和2.0协议的区别

java

算法和数据结构

  • java中的接口和C++里的什么类似
  • 介绍红黑树
  • 堆排序的原理
  • BST
  • hashmap原理

java基础知识

  • hashmap原理
  • hashmap为什么是2的幂次
  • Forward和redirect的区别

RequestDispatcher类的forward()方法,浏览器只发出一次请求,Servlet会把请求转给其他信息资源处理,由第二个信息资源响应该请求
HttpServletRequest类的sendRedirect()方法,浏览器会发出两次HTTP请求,浏览器先发送一次请求给servlet1, servlet1高速浏览器”你去访问servlet2",浏览器会在向servlet2发送一次

  • Synchronize关键字为什么jdk1.5后效率提高了

jdk1.5以后使用了CAS机制对synchronized进行了优化,之前,synchronized是阻塞同步,而挂起唤醒的操作比较耗时,而CAS是非阻塞同步,不会武断的将冲突进程挂起

  • volatile 和 synchronized

v保证从内存中取数据,更改变量的值时也会直接写进内存,修改变量的可见性;
s可以保证内存的某个共享变量一次只由一个线程访问,就是上锁;

  • String、StringBuffer、StringBuilder的区别
  • Object类里有哪些方法
  • hashcode、equals和==之间的区别

hashcode返回对象的hash值,对象相等,hashcode一定相等,反之不成立;
equals表示地址相同;
==仅指内容相同;

  • 几种创建线程类的方法

继承thread类,重新run(),start开启线程
实现runnable接口
实现callable接口

  • 简述list、set、map的区别

list列表 元素可以重复的动态数组;
set 集合 元素不能重复 没有get方法 只能用迭代器访问元素;
map 映射,key-value对集合,每个元素包括一个键对象和一个值对象;

  • 说出arraylist,vector,linkedlist的存储型能和特性

arraylist:可以快速随机访问,但删除插入元素比较慢;
linkedlist:俩表,插入和阐述元素开销不大,但元素访问的开销比较大;
vector是线程安全的,因此开销比较大

  • 对象序列化机制,java的序列化做什么用的 序列化id会出现哪些问题
  • hibernate和ibatis区别
  • hashmap、hashtable、hashset的区别,哪个key可以为空

hashset是基于hashmap,但value不重复;
hashtable线程安全,hashmap非线程安全;
hashmap键可以为null,但只能有一个;

  • 集合加锁?synchronized与static synchronized的区别
  • web设计中url怎么保存,参数怎么传递
  • tomcat的session共享机制,优先加载什么库?为什么?
  • struts2的实现原理
  • JVM、JMM
  • 垃圾回收(什么是垃圾回收,算法,GC怎么给内存分区)
  • 虚拟机内存模型

分为线程栈和堆,原始类型本地变量存放在线程栈中,一个线程的本地变量对其他线程是不可见的,对象存放在堆中,可以被线程共享;

  • 类加载机制(哪几种classloader?双亲委派模型是什么,为什么要这么做)
  • 是否可以自己定义一个java.lang.String类,为什么?
  • 线程池的使用时的注意事项

设计模式

  • 抽象工厂和工厂方法模式的区别
  • 工厂模式的思想
  • 单例
  • 懒汉饿汉双检锁
  • 其他:策略、门面、桥接、观察者模式

框架

  • Spring的IOC、AOP原理
  • Spring中autowire和resource关键字的区别
  • MVC

模型:数据的存储,数据处理的规则
视图:将模型的数据显示给客户看,UI
控制器:流程控制,接收来自客户端的请求,把请求按照一定的规则转换进行转换,再交给模型和视图处理
将UI显示,业务逻辑,流程控制很好的分离开来,使得程序的开发更好分工,以及程序更加容易维护和扩展

c++

  • C、C++内存机制:

data区:初始化了的全局变量和静态变量;
bss区:未初始化的全局变量和静态变量存放在这;
栈:用于存放本地变量,内部临时变量,函数参数以及有关上下文的连续的内存区域;
堆:动态内存分配,malloc、new;不连续的内存区域;
代码区

  • 静态局部变量的特点

静态局部变量是定义在函数内部的变量,只在函数内部可见;
在函数调用中,变量的值不会丢失;

  • C++的多态,写一个简单多态的用法

多态是一个接口的多种实现,同一个方法可以有不同的实现
把不同的子类对象都当作父类来看,屏蔽不同子类对象之间的差异,写出通用的代码)
函数重载、函数覆盖(参数相同,子类函数覆盖同名同参父类函数,父类函数必须是虚函数)、函数隐藏,派生类函数隐藏同名同参数
虚函数

  • C++中malloc和new的区别
  • C++的内联是什么
  • 堆和栈的区别
  • 函数调用过程
  • 硬件断点和软件断点

测试思维

  • 三角形的三边,判断等腰三角形,然后是等边三角形

先判断是否为三角形;三边不等则为普通三角形;三边相等则为等边,其余均为等腰

  • 给你一个QQ群,怎样测试其中一个群成员发送消息,其他成员都收到消息了

服务器端测试是否收到以及是否发出
登入几个群成员的客户端,查看是否成功接收)

  • 登入了qq账号,如果是会员的话就显示一个红灯,如果不是会员的话灯就不亮,怎样对这个简单的用例设计测试场景?
  • 有一个抽奖的程序,一等奖概率是10%,二等奖概率是20%,其余是三等奖,这样一个抽奖的程序你会怎样进行测试用例的设计
  • 设计一个对地铁闸机的测试用例
  • 针对一个登入页面设计测试用例

界面测试:布局是否合理、控件的长度高度是否符合要求
功能测试:正常输入、非空检查、错误校验、安全性、验证码、输入密码时,大写键盘开启的时候有提示信息
性能测试:时间、CPU占用、网络带宽、内存、磁盘IO、耗电量
压力测试:同一时刻最大登入的用户数量
安全性测试:SQL注入攻击、XSS攻击、防止暴力破解
易用性测试:
兼容性测试:

  • 针对之前做过的一个项目,通过访问接口进行压力测试,具体实现方式

算法题

  • 整型转字符串

先判断数字有几位,除以10 ,先取商,在取余数,直到商为0;
重复上述过程,取到余数后 + '0';

  • 写内存拷贝,源地址不能破坏

如果源数据拷贝后的数据有地址重叠,则从后向前复制

  • 单链表就地翻转

头插法

  • 深拷贝和浅拷贝
  • 给定一个数组,求最大连续子序列的和
  • 你有20元钱,每瓶汽水一元钱,两个空瓶子可以换一瓶饮料,写程序判断可以最多买多少瓶

数据库

  • 数据库常用指令
  • 乐观锁、悲观锁
  • 数据库事务ACID是什么,数据库优化
  • 关系型数据库MYSQL
  • 非关系型Redis,Redis的过期策略

安全方向

  • xss注入问题

XSS攻击,一些网站对输入框没有做严格的检查,攻击者在web页面的输入框写入js的脚本,受害者访问时,js脚本会被执行,攻击者利用这个可以获取很多受害者信息例如cookie,可以据此展开会话劫持

  • CSRF跨站点请求

受害者点击进入攻击者设计好的网站,这个网站会执行恶意脚本,可能会获取受害者的一些信息例如cookie,用来伪造HTTP的POST报文,提交表单,恶意篡改受害者信息等。

  • 常见的安全漏洞
  • RSA、HTTPS SQL注入 硬件安全部分

RSA加密:非对称密钥,安全性基于大数分解难题;甲方用乙方的公钥对信息加密之后,传输给乙方,乙方用自己的私钥解密。
RSA签名:用私钥签名,公钥验证;甲方用自己的私钥对要传输的数据签名,生成签名字段附加在要传输的数据上,整体再用乙方的公钥加密,乙方接收后,用自己的私钥解密,提取签名字段,并用甲方公钥解密,与数据部分对比,验证是否一致
HTTPS:加密请求、私钥、数字证书、公钥
HTTPS:握手过程验证数字证书和传输对称密钥。网站向浏览器发送 数字证书,浏览器对证书进行验证,验证无误后,浏览器用数字证书里的公钥加密对称密钥,传送给网站,网站用自己的私钥解密,之后数据传输都用对称密钥加密,非对称密钥确保对称密钥的安全传输。
SQL注入:本质是把用户输入数据作为代码执行。比较常见的验证SQL漏洞是否存在的方式是构造简单的条件语句,根据返回页面是否发送变化,来判断SQL语句是否得到执行。防御:限制数据类型。

  • 共享变量是不是安全的,怎么解决?

多线程情况下,访问共享变量的顺序不同,可能造成错误的结果,应该使用信号量进行同步访问共享变量

  • 堆溢出和栈溢出shellcode怎么写
  • windows下hook方式,inline hook
  • dep保护原理
  • ALSR怎么破
  • 虚表、虚表指针,及如何hook虚函数
  • 对称加密、AES、DES
  • RSA密钥生成过程
  • 堆喷的各种奇淫技巧

其余问题

  • 对腾讯的认识
  • 对自己今后的职业规划
  • 你认为测试和开发什么关系
  • 你认为优秀的测试工程师应该具备哪些条件
  • 为什么选择测试岗位

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published