腾讯后端开发实习一面(24届)

毫无准备的腾讯一面,最近都在忙比赛去了,突然收到腾讯一面的邮件,直接没准备。。。

总结,除了Vue其他的都挺好,但是腾讯hr为啥Vue面我四个问题,不是面的后端开发吗,好难呀,都只能随便说一点。。。

预期结果肯定没了,打完比赛再来面,以下是面经。。。

文章目录

      • 1、Vue中v-if 和v-show区别
        • 那什么时候需要用v-if,什么时候适合用v-show呢?
      • 2、computed和watch区别
      • 3、Vue生命周期理解
      • 4、Vue单页面(SPA)和多页面(MPA)的理解
        • 什么是SPA:
        • SPA的优点
        • SPA的缺点
        • 什么是MPA
        • 对比
      • 5、TCP三次握手
      • 6、Java中多态的理解
        • 实现多态的条件:
      • 7、Java中的内存溢出和内存泄漏
        • 1、内存泄漏memory leak :
        • 2、内存溢出 out of memory :
        • 3、二者的关系:
      • 8、Linux常用命令
      • 9、Redis数据结构有哪些
      • 10、字符串翻转
        • 方式一:栈
        • 方式二:ArrayList
      • 11、查找循环链表入环节点

1、Vue中v-if 和v-show区别

它们的作用都是控制元素的显示和隐藏

区别在于:v-if是创建和删除元素,而v-show只是改变元素中的display样式属性

那什么时候需要用v-if,什么时候适合用v-show呢?

如果我们不会频繁的让元素在显示和隐藏之间切换,那我们比较适合使用v-if,这样可以提高我们的页面渲染速度,因为使用v-if指令的元素只有当v-if指定的值为true时,这个元素才会被创建,而不是当页面渲染时就创建。如果我们需要让元素在显示和隐藏之间频繁的切换,那这时我们就比较适合用v-show,因为这样只是改变元素的样式属性,而不用频繁的创建和删除元素,消耗性能。

2、computed和watch区别

1、computed是计算属性;watch是监听,监听data中的数据变化。
2、computed支持缓存,当其依赖的属性的值发生变化时,计算属性会重新计算,反之,则使用缓存中的属性值;watch不支持缓存,当对应属性发生变化的时候,响应执行。
3、computed不支持异步,有异步操作时无法监听数据变化;watch支持异步操作。
4、computed第一次加载时就监听;watch默认第一次加载时不监听。

3、Vue生命周期理解

Vue的生命周期就是vue实例从创建到销毁的全过程,也就是new Vue() 开始就是vue生命周期的开始。Vue 实例有⼀个完整的⽣命周期,也就是从开始创建、初始化数据、编译模版、挂载Dom -> 渲染、更新 -> 渲染、卸载 等⼀系列过程,称这是Vue的⽣命周期。钩子函数是Vue生命周期中每个阶段对外开放让程序员操作Vue的接口。Vue有8个钩子函数。

创建前:

beforeCreate 组件实例被创建之初,data 和 methods 中的数据还没有初始化

创建后:

created 组件实例已经完全创建,data 和 methods 都已经初始化好了

挂载前:

beforeMount 指令已经解析完毕,内存中已经生成dom树,但是尚未挂载到页面中去

挂载后:

mounted dom渲染完毕页面和内存的数据已经同步

更新前:

beforeUpdate 组件数据更新之前调用, 此时页面中显示的数据还是旧的,但 data 是最新的,页面尚未和最新的数据保持同步

更新后:

update 组件数据更新之后,页面和 data 数据已经保持同步,都是最新的

销毁前:

beforeDestory 组件销毁前调用,vue 实例从运行阶段进入到销毁阶段,这时 vue 实例身上所有都可用,还没有真正执行销毁

销毁后:

destoryed 组件销毁后调用,vue 实例上的所有都不可以用了

4、Vue单页面(SPA)和多页面(MPA)的理解

什么是SPA:

客户端渲染。它所需的资源,如 HTML、CSS 和 JS 等,在一次请求中就加载完成,也就是不需刷新地动态加载。浏览器(Client)渲染顾名思义就是所有的页面渲染、逻辑处理、页面路由、接口请求均是在浏览器中发生。对于 SPA 来说,页面的切换就是组件或视图之间的切换

简单来说,SPA应用程序只有一个html文件,在vue中可以通过vue-router来局部切换组件,而非刷新整个页面,来实现无刷新切换页面的技术。

SPA的优点

  • 1.页面切换快

页面每次切换跳转时,并不需要做html文件的请求,这样就节约了很多http发送时延,我们在切换页面的时候速度很快。

  • 2.用户体验好

页面片段间的切换快,包括移动设备, 尤其是在网络环境差的时候, 因为组件已经预先加载好了, 并不需要发送网络请求, 所以用户体验好

SPA的缺点

  • 1.首屏加载速度慢

首屏时需要请求一次html,同时还要发送一次js请求,两次请求回来了,首屏才会展示出来。相对于多页应用,首屏时间慢。

  • 2.不易于SEO

SEO效果差,因为搜索引擎只认识html里的内容,不认识js的内容,而单页应用的内容都是靠js渲染生成出来的,搜索引擎不识别这部分内容,也就不会给一个好的排名,会导致SPA应用做出来的网页在百度和谷歌上的排名差。

什么是MPA

MPA多页面应用 MultiPage Application ,指有多个独立页面的应用(多个html页面),每个页面必须重复加载js、css等相关资源。多页应用跳转,需要整页资源刷新。

SPA 对比最大的不同即是页面路由切换由原生浏览器文档跳转(navigating across documents)控制。 页面跳转,是返回 HTML 的。

对比

SPA和MPA的对比.png

5、TCP三次握手

1、服务端新建套接字,绑定地址信息后开始监听,进入LISTEN状态。

2、客户端新建套接字绑定地址信息后调用connect,发送连接请求SYN,并进入SYN_SENT状态,等待服务器的确认。

3、服务端一旦监听到连接请求,就会将连接放入内核等待队列中,并向客户端发送SYN和确认报文段ACK,进入SYN_RECD状态。

4、客户端收到SYN+ACK报文后向服务端发送确认报文段ACK,并进入ESTABLISHED状态,开始读写数据。

5、服务端一旦收到客户端的确认报文,就进入ESTABLISHED状态,就可以进行读写数据了

6、Java中多态的理解

通俗点讲,多态就是不同对象对同一物体或事件发出不同的反应或响应。比如stuendt是一个父类,那么在操场上上体育课的学生和在教室里面的学生就是它的子类。这时上课铃声响了,上体育课的学生去操场,在教室里面上课的学生则是回教室,不同的学生有着不同的反应,这就是多态。

实现多态的条件:

1.继承:必须要有子类继承父类的继承关系。
2.重写:子类需要对父类中的一些方法进行重写,然后调用方法时就会调用子类重写的方法而不是原本父类的方法。
3.向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才能够具备既能调用父类的方法和子类的方法。

如:List l =new ArrayList();

7、Java中的内存溢出和内存泄漏

1、内存泄漏memory leak :

是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。

2、内存溢出 out of memory :

指程序申请内存时,没有足够的内存供申请者使用,或者说,给了你一块存储int类型数据的存储空间,但是你却存储long类型的数据,那么结果就是内存不够用,此时就会报错OOM,即所谓的内存溢出。

3、二者的关系:

内存泄漏的堆积最终会导致内存溢出
内存溢出就是你要的内存空间超过了系统实际分配给你的空间,此时系统相当于没法满足你的需求,就会报内存溢出的错误。

内存泄漏: 是指你向系统申请分配内存进行使用(new),可是使用完了以后却不归还(delete),结果你申请到的那块内存你自己也不能再访问(也许你把它的地址给弄丢了),而系统也不能再次将它分配给需要的程序。就相当于你租了个带钥匙的柜子,你存完东西之后把柜子锁上之后,把钥匙丢了或者没有将钥匙还回去,那么结果就是这个柜子将无法供给任何人使用,也无法被垃圾回收器回收,因为找不到他的任何信息。

内存溢出:一个盘子用尽各种方法只能装4个果子,你装了5个,结果掉倒地上不能吃了。这就是溢出。比方说栈,栈满时再做进栈必定产生空间溢出,叫上溢,栈空时再做退栈也产生空间溢出,称为下溢。就是分配的内存不足以放下数据项序列,称为内存溢出。说白了就是我承受不了那么多,那我就报错。

8、Linux常用命令

推荐这个博主的博客:https://blog.csdn.net/luansj/article/details/97272672

9、Redis数据结构有哪些

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(无序集合)及zset(有序集合)。

还有三个特殊类型。。

细节这里不叙述了。。

10、字符串翻转

方式一:栈

package src.com.wz.leetcode.test;
import java.util.Stack;

/**使用栈
 * @author lenovo
 */
public class Test10 {
    public static void main(String[] args) {
        String str = "hello!";
        char[] chars = str.toCharArray();
        Stack<Character> stack = new Stack<>();
        for (int i = 0; i < chars.length; i++) {
            stack.push(chars[i]);
        }
        StringBuilder stringBuilder = new StringBuilder();
        while (stack.size()>0){
            stringBuilder.append(stack.pop());
        }
        System.out.println(stringBuilder.toString());
    }
}

方式二:ArrayList

package src.com.wz.leetcode.test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * @author lenovo
 */
public class Test12 {
    public static void main(String[] args) {
        String str ="hello!";
        String[] split = str.split("");
        List<String> list =new ArrayList<>();
        list = Arrays.asList(split);
        Collections.reverse(list);
        for (String s : list) {
            System.out.print(s);
        }
    }
}

11、查找循环链表入环节点

package src.com.wz.leetcode.test;

import java.util.Objects;

/**
 * @author lenovo
 */
public class Test11 {
    public static void main(String[] args) {
        // 链表赋值
        int[] arr ={1,2,3,4,5,6};
        MyListNode list =new MyListNode(1);
        MyListNode cur = list;
        MyListNode cur1 = new MyListNode();
        for (int i = 1; i < arr.length; i++) {
            MyListNode node = new MyListNode(arr[i]);
            cur.next= node;
            cur = cur.next;
            if (i==3){
                cur1 = cur;
            }
        }
        System.out.println(list.toString());
        // 成环
        cur.next = cur1;
        int node = getNode(list);
        System.out.println(node);

    }

    /**
     * 快慢指针查找入环节点
     * @param myListNode 有环链表
     * @return 入环结点value
     */
    public static int getNode(MyListNode myListNode){
        MyListNode cur1 = myListNode;
        MyListNode cur2 = myListNode;
        cur1=cur1.next;
        cur2=cur2.next.next;
        while (!cur1.equals(cur2)){
            cur1=cur1.next;
            cur2=cur2.next.next;
        }
        // 第一次相遇,快指针变成慢指针
        cur2 = myListNode;
        while (!cur1.equals(cur2)){
            cur1=cur1.next;
            cur2=cur2.next;
        }
        // 第二次相遇返回入环结点
        return cur1.value;
    }
}
/**
 * 链表类
 */

class MyListNode{
    public int value;
    public MyListNode next;
    public MyListNode(){}
    public MyListNode(int value) {
        this.value = value;
    }

    @Override
    public String toString() {
        return "MyListNode{" +
                "value=" + value +
                ", next=" + next +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        MyListNode that = (MyListNode) o;
        return value == that.value && Objects.equals(next, that.next);
    }

    @Override
    public int hashCode() {
        return Objects.hash(value, next);
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/5831.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java基础知识——12.小练习

这篇文章就是主要做一些算法小练习用的 1.求机票价格 题目如下&#xff1a; 需求&#xff1a;机票价格按照淡旺季&#xff0c;头等舱经济舱来收费。输入机票原价&#xff0c;淡旺季&#xff0c;头等舱或经济舱来获取机票价格 规则如下&#xff1a;旺季&#xff08;5-10&…

【 Bean 作⽤域和⽣命周期 】

文章目录引用一、认识 Bean的作用域二、作⽤域定义三、Bean 的 6 种作⽤域四、Bean 原理分析4.1 Bean 执行流程4.2 Bean ⽣命周期引用 从前⾯的课程我们可以看出 Spring 是⽤来读取和存储 Bean&#xff0c;因此在 Spring 中 Bean 是最核⼼的操作资源&#xff0c;所以接下来我们…

你真的会写 git commit message 吗?

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;蚂蚁集团高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《EffectiveJava》独家解析》专栏作者。 热门文章推荐…

用GPT-4写代码不用翻墙了?Cursor告诉你:可以~~

目录 一、介绍 二、使用方法 三、其他实例 1.正则表达式 2.自动化测试脚本 3.聊聊技术 一、介绍 Cursor主要功能是根据用户的描述写代码或者进行对话&#xff0c;对话的范围仅限技术方面。优点是不用翻墙、不需要账号。Cursor基于GPT模型&#xff0c;具体什么版本不祥&#…

Powershell脚本自动化登录网站的简单实例,命令行方式实现Http(s)的GET、POST请求

自动化登录网站的流程比较简单&#xff0c;如果不懂 Python、JavaScript、C 等编程语言&#xff0c;又没有安装这些编程语言环境软件&#xff0c;我们还要新的点子&#xff1a;用Windows系统自带的 Powershell 运行自编的脚本来实现。 PowerShell 是一种功能强大的自动化工具&…

大型软件外包项目的开发流程

与中小型软件项目相比&#xff0c;大型软件项目的管理和开发难度更大&#xff0c;需要在开发过程中严格执行软件的项目管理流程&#xff0c;不能有比较明显的问题&#xff0c;有问题也要及时解决。软件项目的开发过程环环相扣&#xff0c;如果在前流程中有明显问题&#xff0c;…

【fluent UDF】保留UDM变量Reserving UDM Variables Using Reserve_User_Memory_Vars-测试分析篇

一、问题背景 因为对Reserve_User_Memory_Vars这个函数比较陌生&#xff0c;在学习官方文档过程中发现难以理解&#xff0c;于是只好亲手在fluent 2022上测试一番。 直接上结论&#xff1a; 此保留函数运行一次后&#xff08;设置GUI界面中的UDM数目第一次加载共享库成功&…

【从零开始学习 UVM】3.8、UVM TestBench架构 —— UVM Agent [uvm_agent]

文章目录 什么是 UVM Agent?所有的Agent Type是什么?如何确定UVM Agent是主动还是被动的?创建UVM代理的步骤一个UVM代理做什么?如何将UVM代理配置为主动或被动?一个UVM Agent例子推荐做法什么是 UVM Agent? 一个 Agent 将Sequencer、Driver和Monitor封装成一个单一实体,…

图像分类的划分数据,dataset和dataloader的实现

目录 1. 介绍 2. 主函数代码 2. utils 模块代码 2.1 划分数据集 2.2 可视化数据集 3. dataset 数据处理 4. collate_fn 5. other 1. 介绍 图像分类一般来说不需要自定义的dataSet&#xff0c;因为pytorch自定义好的ImageFolder可以解决大部分的需求&#xff0c;更多的…

springBoot --- mybatisPlus自动生成代码

mybatisPlus自动生成代码mybatisPlus自动生成代码pom.xmlapplication.yml自动生成代码测试主启动类生成目录结果使用插件 --- 版本要求&#xff1a;3.4.0 版本以上pom.xml更新mybatisplus插件版本mp报错‘AutoGenerator()‘ has private access in ‘com.baomidou.mybatisplus.…

Linux系统中使任务后台挂起不停止的命令

在使用远程SSH连接工具时&#xff0c;退出工具时任务也停止&#xff0c;相当于远程连接工具在系统开启了一个Terminal终端&#xff0c;服务也会随着终端的中断而停止。Linux系统也提供了服务基于后台运行的命令&#xff0c;是独立于终端的进程。 nohup Linux nohup Linux no…

【Python】仅7行代码实现自动化天气报时

文章目录前言一、实现步骤二、请求天气接口1.引入库2.读入数据3.钉钉通知天气预报总结前言 早上出门上班前&#xff0c;我总是忘记查看天气预报&#xff0c;以至于通勤路上下雨来了个措手不及。 回想起来&#xff0c;大部分人早上出门前的行为模式是固定的&#xff0c;那么有…

一个基于stream的EPICS IOC应用程序

本文将介绍如何开发一个基于stream的EPICS IOC应用程序&#xff0c;其将作为一个简单的基于消息的设备&#xff08;用于EPICS stream练习的设备模拟程序_yuyuyuliang00的博客-CSDN博客中最后一个python程序模拟的设备)的IOC控制程序。 1&#xff09; 按如下步骤建立这个IOC程序…

vb+access大气污染模型系统

数据模型就是按专业的要求&#xff0c;用数字方式描述自然界的事物或现象以及他们的关系。 我们通过对地区的具体数值和情况的观察&#xff0c;对大气质量状况做出分析&#xff0c;建立一个符合当地情况的大气污染模型&#xff0c;用来测量大气污染浓度&#xff0c;并根据污染…

在公司兢兢业业5年,被新来的自动化测试倒挂了薪资…

去年年中朋友左思右想从工作了 5 年的企业离职&#xff0c;离职原因很简单&#xff0c;待疲了&#xff0c;薪资也没咋涨过&#xff0c;新来的自动化测试钱比 Ta 高一倍。但离职 Ta 还是很忐忑的&#xff0c;在这个公司待得久了&#xff0c;自己会的东西一直是那些&#xff0c;业…

Python3爬虫图片抓取

在上一章中&#xff0c;我们已经学会了如何使用Python3爬虫抓取文字&#xff0c;那么在本章教程中&#xff0c;将通过实例来教大家如何使用Python3爬虫批量抓取图片。注&#xff1a;该网站目前已经更换了图片的请求方式&#xff0c;以下爬虫方法只能作为思路参考&#xff0c;已…

【Linux】进程理解与学习-程序替换

环境&#xff1a;centos7.6&#xff0c;腾讯云服务器Linux文章都放在了专栏&#xff1a;【Linux】欢迎支持订阅 相关文章推荐&#xff1a; 【Linux】冯.诺依曼体系结构与操作系统 【Linux】进程理解与学习Ⅰ-进程概念 【Linux】进程理解与学习Ⅱ-进程状态 【Linux】进程理解与学…

想拿到10k-40k的offer,这些技能必不可少!作为程序员的你了解吗

总结了一份Java架构师的技能树&#xff0c;希望对Java编程的同学有点帮助 Java编程的技术点&#xff1a; ​ 计算机基础 ​ Java高级特性 设计模式 ​ 数据库 分布式系统 ​ 注意&#xff1a;下文主要是我个人的总结方法经验&#xff08;面试学习和刷题笔记&#xff09; 01…

aws codedeploy 在ec2实例和autoscaling组上进行蓝绿部署

参考资料 https://docs.amazonaws.cn/codedeploy/latest/userguide/reference-appspec-file-structure-hooks.htmlhttps://docs.amazonaws.cn/zh_cn/codedeploy/latest/userguide/applications.html为 EC2/本地蓝/绿部署创建部署组&#xff08;控制台&#xff09; 部署ec2比较…

面试角度看问题:消息队列详解(万字长文,绝对值得一看)

面试角度看问题&#xff1a;消息队列详解前言一、消息队列是什么&#xff1f;二、为什么要使用消息队列&#xff1f;1.解耦2.异步3.削峰三、消息队列有什么缺点&#xff1f;1.系统可用性降低2.系统复杂度提高3.一致性问题四、如何保证消息队列的高可用&#xff1f;1.RabbitMQ 的…
最新文章