个人面经整理跟谁学

                        跟谁学面经
  1. 微信点赞测试
    (1)功能测试
    是否可以点赞
    是否可以取消点赞
    多次点赞是什么情况
    多人点赞顺序是否按照时间顺序排列
    点赞后是否显示头像和名称
    点赞后是否能进行评论
    点赞后退出再进入时是否还存在点赞消息
    多用户点赞再次打开朋友圈是否可以按照顺序看谁点赞了
    点赞之后相同好友是否收到点赞信息
    相同好友收到的点赞信息是否按照时间排列
    相同好友的点赞是否显示头像和名称
    (2)兼容性测试
    不同手机端和电脑端是否可以点赞和取消
    不同移动端是否可以点赞和取消
    (3)性能测试
    弱网点赞
    网络断开是否可以点赞
    用户点赞后多长时间可以看到点赞成功,还有取消时间
    多用户同时点赞是否可以完全收到提示信息
    (4)安全性测试
    点赞是否会泄漏用户信息

  2. 数据库查询语句
    Select语句

  3. 平时怎么学习
    如果有时间会拿专业的书和视频配合学习,如果时间很赶的话就会看网上的文档、经验贴、技术博客来学习

  4. 手写快排
    在这里插入图片描述

  5. 数据库逆序查询
    Select * from table order by filename desc.
    (desc是逆序查询)

  6. 链表查询

  7. 排序
    直接插入排序

void InsertionSort(vector<int> &data){
    for(int i = 1;i<data.size();++i){
        int tmp = data[i];
        for(int j = i;j>0&&tmp<data[j-1];--j){
            data[j]=data[j-1]; //向后覆盖
        }
        data[j]=tmp;
    }
}

简单选择排序

void SelectSort(vector<int> &data){
    for(int i = 0;i<n-1;++i){
        int min = i;
        for(int j = i;j<n;j++){
            if(data[j]<data[min])
                min = j;
        }
        if(i!=min) swap(data[i],data[min]);
    }
}
  1. 手撕归并排序
    在这里插入图片描述

  2. 数组查重
    在这里插入图片描述

  3. 字符串最长连续子串

  4. 如果你是一个小组的领导,和另一个小组合作一个任务,然而另外一个小组的小组长去干别的任务了,会影响到你们组的进度,你该咋办
    与那个小组长协商,让他们组选出一个熟悉业务的代理小组长,和代理小组长交涉。主要思想就是让对方组除了小组长之外的人一起完成任务。

  5. 如果你是个领导,你的下属说不想做枯燥乏味的搬砖工作了,想干别的活,你该咋办(一下子感觉自己走错片场)

  6. 了解一下他到底想做什么。告诉他,看别人的工作老是觉得这是光鲜亮丽、多姿多彩的,但其实不深入了解根本不知道那个工作到底是什么样子,想换的工作只是处于想象之中。

  7. 如果他没有特定的想做的工作,我就会让他多思考一下自己到底想要什么,大家都是成年人,除了兴趣之外还要考虑生活,考虑很多东西,不能凭一时冲动就做出一些不一定正确的决定。况且,我认为任何工作做一段时间失去新鲜感可能都会有一个疲倦期,多做一些相关的有趣的事情,比如自己去实现一些有趣的项目啊,找到成就感,就不会对自己的事业那么排斥了。

  8. 如果他真的有什么远大理想,毕生追求,自己想得很清楚的话,我觉得应该鼓励他去追求。

  9. 你有男朋友吗,他是哪个学校的,干啥的,他找实习了吗,以后你俩想去哪发展呀(一下子感觉到了来自面试官的母爱)!!!

  10. 索引种类
    普通索引,加速查询
    唯一索引,加速查询+列值唯一(可以有null)
    主键索引,加速查询+列值唯一(不可以有null)+表中只有一个
    组合索引,多列值组成一个索引,专门用于组合搜索,效率大于索引合并
    全文索引,对文本内容进行分词搜索
    索引类型:
    Fulltext,全文索引。只有char、varchar、text列可以建立全文索引。
    Hash,类似于键值对,高效
    Btree,默认和最常用的索引类型
    Rtree,少用,优势在于范围查找。存储引擎MyISAM、BDb、innoDb、NDb

  11. 建立索引应该注意什么
    把该字段按照一定的方式排序,建立索引。
    注意:

  12. 如果对权标都要扫描,那么建立索引没有意义。

  13. 对非唯一字段,比如性别,增加索引没有意义

  14. 对于记录比较少的表,如果建立索引就要占用很多空间,不会带来速度优化反而浪费存储空间。 对于update/insert/delete执行,字段的索引都要重新计算

  15. sql怎么优化

  16. 数据库设计方面
    表与表的业务联系要明确
    表字段尽量使用数值型,数值型字段在mysql底层应用性能比string类型好
    建立合理的索引

  17. Sql语句优化

  18. 合理使用表连接(不超过5个表连接)
    考虑使用临时表或表变量存放中间结果
    视图嵌套不要过深(不超过2个)
    表连接得越多性能越差
    最好将连接拆分成若干个过程逐一执行
    外连接效果差,必须对左右表都进行扫描
    尽量使用inner join查询(outer join意味着必须对左表或右表查询所有行)

  19. 合理使用索引,
    通配符中like的使用 select id,name from userinfo where name like ‘name%’这样是会使用索引的,而用‘%name%‘或者‘%name‘的形式是会全表扫描的。(通配符使用在首位就无法用索引)
    Where子句左边不要用函数、算数运算、其他表达式运算。用了就不会用索引了
    Where子句不要用is null, is not null判断,用了就不是索引了
    避免在where子句中使用!=或者< >操作符
    少用in和not in
    少用or,用union代替
    不要建立太多索引,索引会提高select的效率,但是会降低insert和update的效率
    Select … from … on … where … group by…having …order by…limit…
    On where having,尽量在where过滤,比having早
    Not in 效率低用not exists代替
    数据量过大的时候少用select*
    读写分离和分库分表

  20. 索引数据结构,为什么用B+树
    首先,B+树的一个结点就是一页,磁盘读取以页为单位,减少磁盘io次数,会使查询效率提高(局部性原理)。B+树的内结点不存数据,只存索引。

  21. 聚集索引和非聚集索引
    聚集索引通过索引可以查到需要查找的数据,而非聚集索引可以查找到对应的主键值,再通过主键的值查找到需要的数据

    1. JVM分区


      本地方法栈
      程序计数器
      方法区
  22. 垃圾回收算法
    标记清除算法:标记清除过程效率不高,清除后产生不连续的内部碎片
    复制算法:分成两块,每次只对其中一块内存进行回收,效率高。最大可分配内存少了一半。
    标记整理算法:让所有对象都移向一边,然后清理到端边界以外的内存。
    分代收集:根据对象的存活周期将内存划分为几块。分为新生代和老年代。新生代用复制算法,老年代用标记清除算法或者标记整理算法。
    增量算法:垃圾收集线程和应用程序线程交替执行,直到垃圾收集完成。

  23. volatile作用
    用volatile修饰的变量,线程在每次使用变量时都会读取变量修改后的值,不进行编译器优化,volatile变量随时可能变化,每次从地址中读取。

  24. get和post请求的区别和用法
    区别:

  25. get在浏览器回退是无害的,post会再次提交请求

  26. get请求会被浏览器主动cache,post不会

  27. get请求只支持url编码,post请求支持多种编码

  28. get请求参数会被完整保存在浏览器历史记录,post参数不会被保留

  29. get请求在url中传送的参数有长度限制,post没有长度限制

  30. get只接受ascii字符,post没有限制

  31. get更不安全,参数直接暴露在url

  32. get参数通过url传递,post放在request body

post更安全
post能发送的数据量更大
post能发送更多的数据类型
post比get慢
post请求产生两个tcp包,get请求产生一个tcp包

get是从服务器获取数据,post是给服务器传送数据
数据查询时建议用get,数据添加、修改、删除时建议用post
包含机密的话用post更好

  1. 从技术层面讲讲在线教育和抖音这种短视频平台的区别

  2. 最长的无重复子字符串 https://leetcode.com/problems/longest-substring-without-repeating-characters

  3. 10万个数找出最大的不重复的10个
    先hash去重,用最小堆,不断往最小堆中插入数字,当堆的元素超过10个时,就将堆顶的元素弹出。最后中序遍历小顶堆是有序的最大不重复的十个数

  4. 重载和重写
    重载:一个类中多个方法有相同的名字,方法的参数列表不同。是多态性的体现。
    重写:重写是针对子类对父类的重写,有相同的方法名,参数列表,返回值

  5. Java面向对象的特点
    封装:根据职能将属性和方法封装在一个抽象的类中,用类创建对象,用对象调用方法,对象方法的细节都封装在类中。
    继承:实现代码重用,相同的代码不需要重复写。子类拥有父类的属性和方法。
    多态:由于子类重写了父类的方法,用父类的引用指向子类的对象,调用方法时进行动态绑定。提高可扩展可维护性。

  6. mysql的存储引擎,区别
    myisam:不支持事务,不支持外键
    innodb:支持事务

  7. 复合索引的查找规则

  8. 表中(id,Name) ,根据name查找,怎么个查找过程

  9. TCPIP哪层t
    Tcp传输层,ip网络层

  10. TCP UDP区别,聊天为什么UDP。

  11. 1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接

  12. 2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保 证可靠交付

  13. 3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的,应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)

  14. 4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信

  15. 5、TCP首部开销20字节;UDP的首部开销小,只有8个字节

  16. 6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

  17. 线程间通信
    Wait/notify 等待
    Volatile 内存共享
    阻塞队列

  18. 进程间通信
    管道
    消息队列
    信号量
    共享内存

  19. 堆区和栈区的区别

  20. 栈是自动分配,堆是人为分配

  21. 栈获得空间较小,堆获得空间较大

  22. 栈分配的速度较快,堆分配的速度较慢

  23. 栈向下生长,堆向上生长

  24. 同步异步
    同步:程序1调用程序2时,程序1停下来等待,直到程序2完成回到程序1,程序1才继续执行下去
    异步:程序1调用程序2,程序1继续执行自己的下一个动作,不受程序2的影响

  25. 什么是野指针
    指向不可知位置的指针
    危害:触发段错误
    避免:定义指针时初始化为null;使用完之后赋值为null

  26. 常见的hash算法
    MD4,MD5

  27. hash表满了,效率变低之后,你想怎样处理?
    虚函数原理
    被virtual关键字修饰的成员函数就是虚函数。主要是为了实现多态。
    实现原理:虚函数表+虚表指针。每个类使用一个虚函数表,每个类对象使用一个虚表指针

  28. malloc和new
    malloc是库函数,new是运算符
    new底层是用malloc实现的,但是new更加智能,因为会自动执行构造函数和析构函数
    new返回指定类型的指针,malloc返回void*

  29. 指针和引用
    指针是地址,引用是别名
    指针可以为空,引用不能为空
    指针可以有多级,引用只能有一级
    指针可以改变指向,引用不能改变
    有const指针,没有const引用
    Sizeof指针是指针的大小,sizeof引用时对象的大小

  30. 判断一个点在不在三角形内部(这种题我居然也想了快三分钟。。。我真是个智障。。)
    用double算面积相等只能跑出百分之五十多
    3次握手,4次挥手
    在这里插入图片描述
    在这里插入图片描述

48.http状态码(gg)
100-199请求收到继续处理
200-299成功
300-399资源重定向
400-499客户端请求出错
500-599服务器端出错
200响应成功
302跳转,重定向
400客户端语法错误
403服务器拒绝提供服务
404资源不存在
505服务器内部错误

score (id, 科目, 分数, 学生id) 学生表(学生id,姓名) 求数学排名前三的学生id,及分数。
49. 编程是斐波拉契数列和反转整数
在这里插入图片描述
在这里插入图片描述
50. 数学问题(不知道怎么就考这个,,):时钟,时针指向1,分针指向0,一点整时,时针和分针夹角多少度。然后当分针越过时针,夹角再为30度时,时间是多少?(感觉像是在考编程。。可以理解为下次30度在什么时间)

30度

  1. 测试的职责
    搭建测试环境、撰写测试用例、执行测试用例、写测试计划和测试报告、测试、提交bug表单跟踪bug修改情况、执行自动化测试、执行性能测试

非递归遍历二叉树
递归
在这里插入图片描述

修饰符作用范围
在这里插入图片描述

时间复杂度
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/alike_meng/article/details/106685035
今日推荐