面试总结1Java知识

面试总结


前言

最近面试总结

一、Java基础

1.1 string

String 创建的字符串存储在常量池中,而 new 创建的字符串对象在堆上:
String是final修饰的,每次改变都相当与是生成一个新的String对象到常量池,那么频繁的改变,内存JVM中如果没有GC就会有成百上万的数据。
注意:String = “ac”+“cd” 和 String = “accd” 等价不算改变

StringBuffer和StringBuilder 基本相同都是字符数组char[]并且他们都是继承AbstractStringBuilder类
在这里插入图片描述

只不过StringBuffer的append方法被synchronized修饰了
在这里插入图片描述

如果要多次操作字符串,使用StringBuffer和StringBuilder会提高效率,但至少在数量级超过百万时,StringBuilder的速度才会体现出来。没有百万最好还是用StringBuffer

1.2 ==和equals和compareTo

1.==和equals本质一样
在这里插入图片描述
都是比较的是地址,因为再创建对象的时候JVM在栈里存的地址,所以当两个对象比较的时候返回的是false
例如

StringBuffer aa  = new StringBuffer("aa");
        StringBuffer bb  = new StringBuffer("aa");
        System.out.println(aa.equals(bb));// false
        String cc  = "aa";
        String dd  = "aa";
        System.out.println(cc.equals(dd));// true


至于cc==dd为true因为String对equals进行了重写,如果是String类型比较就比较值
在这里插入图片描述
2.compareTo返回的是数字

public static void main(String[] args) {
        String s1 = new String("abc");
        String s2 = new String("ac");
        String s3 = new String("abc");
        String s4 = new String("abcdef");
        System.out.println(s1.compareTo(s2)); // 不同输出字符差值-1
        System.out.println(s1.compareTo(s3)); // 相同输出 0
        System.out.println(s1.compareTo(s4)); // 前k个字符完全相同,输出长度差值 -3

compareTo比较的依据是分成每个char来查找他的ASCII码的差值,如果一样就返回0
在这里插入图片描述

二、中间件

2.1 redis

redis 问题还是挺多的,比如数据一致、可靠、可用等等

2.1.1 关于redis简单说一下

瞬间麻抓,这个就简单说一下,我说只用做缓存用的。剩下的看一下就行
Redis 是一个开源的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。

2.1.2 redis 做缓存都做什么

我接触到的项目是做购物车还有商品、国际化的缓存的。
这也就引申除了做购物车的问题,比如保证商品的实时性,缓存的可靠、缓存击穿等问题。挺多的反正,问的再深我也不会了。

2.1.3 购物车怎么保证价格的实时性

redis内关于商品的信息可以只保存相关id信息。购物车内取值时再同步获取。
购物车里面只保存商品的 id。
商品的价格按照 id 单独存在 redis 里面。
价格改动的时候,按照商品 id 修改 redis 里面的价格数据。
获取购物车信息的时候,根据购物车里的商品再单独在 redis 里面查询商品价格。

对于在用户在客户端操作方面来说 如果用户在前端连续点击 有可能造成并发,所以在加入购物车的时候我注意并发事件,redis为我提供了watch 我可以通过watch来监听 ,避免连续点击
在这里插入图片描述
当取redis缓存的时候,值发生改变的,watch下面的事物事件会中断,这样的话
在这里插入图片描述
exec对象就为null 就会去redis里面再去取一次。

2.2 rabbitmq

代码如下(示例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

2.读入数据

代码如下(示例):

data = pd.read_csv(
    'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。


总结

提示:这里对文章进行总结:

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值