首页 > 其他分享 >【面经】好舍友超哥的苏小妍面经

【面经】好舍友超哥的苏小妍面经

时间:2022-09-26 21:59:46浏览次数:38  
标签:变量 超哥 聚集 面经 MAC 舍友 索引 地址 线程

超哥的苏小妍

1.三个string区别

  • String是字符串常量,不可变。String创建的字符串在常量池中,对于String类的任何改变都会返回一个新的String对象。
  • tringBuild,StringBuffer是字符串变量,可变。StringBuild,StringBuffer在堆中创建对象,对于StringBuild,StringBuffer中的内容修改都是当前这个对象。
  • StringBuild是非线程安全的,但是效率高;
  • StringBuffer是线程安全的,效率相较StringBuild较低。StringBuffer 对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的。StringBuilder 并没有对方法进行加同步锁,所以是非线程安全的。
  • 对于三者使用的总结:
  • 操作少量的数据: 适用 String
  • 单线程操作字符串缓冲区下大量数据: 推荐使用 StringBuilder(即不考虑并发问题时推荐StringBuilde)
  • 多线程操作字符串缓冲区下大量数据: 推荐使用 StringBuffer

2.stringbuffer为啥安全

  • StringBuffer 对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的。

3.arp协议

  • ARP 协议,全称 地址解析协议(Address Resolution Protocol),它解决的是网络层地址和链路层地址之间的转换问题。因为一个 IP 数据报在物理上传输的过程中,总是需要知道下一跳(物理上的下一个目的地)该去往何处,但 IP 地址属于逻辑地址,而 MAC 地址才是物理地址,ARP 协议解决了 IP 地址转 MAC 地址的一些问题。
  • MAC 地址的全称是 媒体访问控制地址(Media Access Control Address)。如果说,互联网中每一个资源都由 IP 地址唯一标识(IP 协议内容),那么一切网络设备都由 MAC 地址唯一标识。
  • 可以理解为,MAC 地址是一个网络设备真正的身份证号,IP 地址只是一种不重复的定位方式,也可以理解为 MAC 地址是身份证号,IP 地址是邮政地址。MAC 地址也有一些别称,如 LAN 地址、物理地址、以太网地址等。
  • ARP 的工作原理将分两种场景讨论:
    • 同一局域网内的 MAC 寻址;
    • 从一个局域网到另一个局域网中的网络设备的寻址。

4.tcp udp区别

  • TCP协议全称是传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。
  • UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。
  • TCP 是一对一的两点服务,即一条连接只有两个端点。
  • UDP 支持一对一、一对多、多对多的交互通信
  • TCP 是可靠交付数据的,数据可以无差错、不丢失、不重复、按需到达。
  • UDP 是尽最大努力交付,不保证可靠交付数据。
  • 由于 TCP 是面向连接,能保证数据的可靠性交付,因此经常用于:FTP 文件传输;HTTP / HTTPS;
  • 由于 UDP 面向无连接,它可以随时发送数据,再加上UDP本身的处理既简单又高效,因此经常用于:包总量较少的通信,如 DNS 、SNMP 等;视频、音频等多媒体通信;广播通信;

5.两个栈实现一个队列

  • 1,首先准备两个栈,栈A与栈B
  • 2,栈A专门用来完成入队列操作,栈B专门用来出队列与取队首元素操作
  • 3,每次入队列操作时,首先得判断B栈是否为空,不空则将B栈元素全都依次入A栈,最后继续入新元素(即将要入栈元素添加到栈A)
  • 4,每次出队列与取队首元素操作时,将A栈中的元素依次入B栈,出队列即取出B栈中的元素,取队首元素即取B栈栈顶元素即可

6.聚集索引和非聚集索引区别

  • 聚集索引:聚集索引是索引结构和数据一起存放的索引。类似于字典的正文,当我们根据拼音直接就能找到那个字。
  • 非聚集索引:非聚集索引是索引结构和数据分开存放的索引。类似于根据偏旁部首找字,首先找到该字所在的地址,再根据地址找到这个字的信息。
  • 区别:
    • 1.聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个
    • 2.聚集索引存储记录是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储并不连续
    • 3.聚集索引:物理存储按照索引排序;聚集索引是一种索引组织形式,索引的键值逻辑顺序决定了表数据行的物理存储顺序。
    • 4.非聚集索引:物理存储不按照索引排序;非聚集索引则就是普通索引了,仅仅只是对数据列创建相应的索引,不影响整个表的物理存储顺序。
    • 5.索引是通过二叉树的数据结构来描述的,我们可以这么理解聚簇索引:索引的叶节点就是数据节点。而非聚簇索引的叶节点仍然是索引节点,只不过有一个指针指向对应的数据块。
  • 优势与缺点:聚集索引插入数据时速度要慢(时间花费在“物理存储的排序”上,也就是首先要找到位置然后插入),查询数据比非聚集数据的速度快。

7.threadlocal
ThreadLocal意为线程本地变量,用于解决多线程并发时访问共享变量的问题。
很明显,在多线程的场景下,当有多个线程对共享变量进行修改的时候,就会出现线程安全问题,即数据不一致问题。常用的解决方法是对访问共享变量的代码加锁(synchronized或者Lock)。但是这种方式对性能的耗费比较大。在JDK1.2中引入了ThreadLocal类,来修饰共享变量,使每个线程都单独拥有一份共享变量,这样就可以做到线程之间对于共享变量的隔离问题。

  • 常用的方法
    • set(T value):设置线程本地变量的内容。
    • get():获取线程本地变量的内容。
    • remove():移除线程本地变量。注意在线程池的线程复用场景中在线程执行完毕时一定要调用remove,避免在线程被重新放入线程池中时被本地变量的旧状态仍然被保存。

8.设计模式

9.动态代理和gclib区别

  • JDK动态代理是实现了被代理对象的接口,Cglib是继承了被代理对象。
  • JDK和Cglib都是在运行期生成字节码,JDK是直接写Class字节码,Cglib使用ASM框架写Class字节码,Cglib代理实现更复杂,生成代理类比JDK效率低。
  • JDK调用代理方法,是通过反射机制调用,Cglib是通过FastClass机制直接调用方法,Cglib执行效率更高。

标签:变量,超哥,聚集,面经,MAC,舍友,索引,地址,线程
From: https://www.cnblogs.com/ricc/p/16732622.html

相关文章

  • C++面经
    C++基础1.C/C++内存有哪几种类型?C中,内存分为5个区:堆(malloc)、栈(如局部变量、函数参数)、程序代码区(存放二进制代码)、全局/静态存储区(全局变量、static变量)和常量存储......
  • 【面经】中兴java一面凉经
    中兴面经1、出示身份证2、自我介绍3、本科成绩排名、硕士成绩排名4、java的代码量5、抽象类和接口的差别,使用场景抽象类要被子类继承,接口要被类实现。接口只能做......
  • 【面经】绿盟西安软件开发一面二面
    绿盟一面1、自我介绍2、数组和链表的区别3、数组和链表的优缺点4、链表的查找性能5、==和equals的区别6、封装继承多态7、数据库用什么8、查询所有用户最近一次登录9、htt......
  • 信锐一面面试准备-面经总结
      1.水平垂直居中的几种方法     (1).水平居中             1.inlie元素:text-align:center        2.block元素:margin:a......
  • 广州汇量科技前端实习生面经
    面试自我介绍2.介绍项目(估计是我的项目没什么吸引点,面试官没有多问)3.介绍js垃圾回收的两种机制,以及各自的优缺点4.什么是闭包5.事件冒泡,可以阻止吗?原生js如何阻止?举......
  • 广州平云信息科技前端实习生面经
    笔试总共有两次笔试,第一次是在boss直聘上直接发链接做题,后面通知面试,结果到现场还需要再做一份相对简单的笔试题...手写深拷贝数组去重与排序擅长的技术栈和还原设计......
  • 用metasploit映射公网远程控制舍友电脑
    用metasploit映射公网远程控制舍友电脑Metasploit是一款开源的安全漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,并管理专家驱动的安全性进行评......
  • 面经-框架-Spring Bean生命周期
    SpringBean生命周期1.处理名称,检查缓存一级缓存:放单例成品对象;二级缓存:放单例工厂的产品;三级缓存:放单例工厂。2.检查父工厂如果父子容器名称重复,优先子容器bean。3......
  • ZOOM后端开发实习面经(2021/06/03)
    Java熟悉Java哪些部分面向对象介绍,作用继承的缺点,举例继承在什么情况下使用读过源码没,HashMap结构,什么时候扩容,加载因子,初始长度,扩容流程为什么HashMap不安全,有哪些......
  • 面经-Java创建对象的过程
    java创建对象的过程主要分为一下五个步骤:(1)类加载检查Java虚拟机(jvm)在读取一条new指令时候,首先检查能否在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是......