当前位置: 首页 > news >正文

淮北网站建设推广软件用户界面设计

淮北网站建设推广,软件用户界面设计,织梦网站做中英文双语言版本,网站管理系统制作软件下载米哈游的春招实习面经#xff0c;主要考察了java操作系统mysql网络#xff0c;这四个方面。 面试流程#xff0c;共1小时#xff0c;1min自我介绍#xff0c;20min写题#xff0c;剩下问题基础知识。 Java String#xff0c;StringBuilder#xff0c; StringBuffer区…米哈游的春招实习面经主要考察了java操作系统mysql网络这四个方面。 面试流程共1小时1min自我介绍20min写题剩下问题基础知识。 Java StringStringBuilder StringBuffer区别单线程大量操作字符串用哪个 回答用StringBuilder 补充 String、StringBuilder和StringBuffer都是Java中用于操作字符串的类。 String是不可变的字符序列每次对String进行修改时都会创建一个新的String对象因此在大量操作字符串时使用String会频繁地创建对象导致性能较低。 StringBuilder和StringBuffer都是可变的字符序列可以对其进行多次修改而不创建新的对象。两者的区别在于线程安全性StringBuffer是线程安全的而StringBuilder是非线程安全的。因为StringBuffer的所有共有方法都是同步的所以在多线程环境下使用StringBuffer可以保证线程安全但是会降低性能。而StringBuilder没有同步方法所以在单线程环境下使用StringBuilder性能更高。 因此在单线程环境下进行大量的字符串操作时应该使用StringBuilder可以获得更好的性能。在多线程环境下使用StringBuffer可以保证线程安全但是会牺牲一定的性能。 综上所述单线程大量操作字符串时应该使用StringBuilder而在多线程环境下应该使用StringBuffer。 synchronized偏向锁直接升级为重量级锁吗重量级锁怎么实现的 回答扯了一下synchronized四种锁 补充 偏向锁不会直接升级为重量级锁而是会先升级为轻量级锁如果轻量级锁竞争失败则再升级为重量级锁。 重量级锁的实现一般是通过操作系统的互斥量mutex来实现的。当一个线程获取重量级锁时会将该线程挂起直到锁被释放。这种锁的性能比较低因为每次加锁和释放锁都需要涉及到操作系统的系统调用会有较大的开销。因此在实际应用中要尽量避免使用重量级锁。 Java中的异常 回答分类不大记得。讲了异常的捕获from\to\target指针 补充 当程序出现异常时Java会抛出一个异常对象。Java中的异常可以分为三类 1、Checked Exception受检异常这种异常在编译时就可以被检测出来必须要在代码中进行处理或者声明抛出否则编译不通过。这类异常主要是由程序的外部环境引起的例如文件不存在、网络连接失败等。常见的Checked Exception包括IOException、SQLException等。 2、Unchecked Exception非受检异常这种异常通常是由程序内部错误引起的例如NullPointerException、ArrayIndexOutOfBoundsException、IllegalArgumentException等。这类异常不需要在代码中声明抛出也可以不进行处理但是如果不进行处理程序会崩溃。 3、Error这种异常通常是由JVM或者硬件引起的例如OutOfMemoryError、StackOverflowError等。这类异常也不需要在代码中声明抛出也可以不进行处理但是如果不进行处理程序也会崩溃。 在Java中异常处理通常包括try-catch语句和throw语句。try-catch语句可以捕获异常并进行处理而throw语句可以手动抛出异常。 操作系统 进程间的通信方式管道模型的分类 最简单的方式就是管道管道分为「匿名管道」和「命名管道」。 匿名管道顾名思义它没有名字标识匿名管道是特殊文件只存在于内存没有存在于文件系统中shell 命令中的「|」竖线就是匿名管道通信的数据是无格式的流并且大小受限通信的方式是单向的数据只能在一个方向上流动如果要双向通信需要创建两个管道再来匿名管道是只能用于存在父子关系的进程间通信匿名管道的生命周期随着进程创建而建立随着进程终止而消失。 命名管道突破了匿名管道只能在亲缘关系进程间的通信限制因为使用命名管道的前提需要在文件系统创建一个类型为 p 的设备文件那么毫无关系的进程就可以通过这个设备文件进行通信。另外不管是匿名管道还是命名管道进程写入的数据都是缓存在内核中另一个进程读取数据时候自然也是从内核中获取同时通信数据都遵循先进先出原则。 消息队列克服了管道通信的数据是无格式的字节流的问题消息队列实际上是保存在内核的「消息链表」消息队列的消息体是可以用户自定义的数据类型发送数据时会被分成一个一个独立的消息体当然接收数据时也要与发送方发送的消息体的数据类型保持一致这样才能保证读取的数据是正确的。消息队列通信的速度不是最及时的毕竟每次数据的写入和读取都需要经过用户态与内核态之间的拷贝过程。 共享内存可以解决消息队列通信中用户态与内核态之间数据拷贝过程带来的开销它直接分配一个共享空间每个进程都可以直接访问就像访问进程自己的空间一样快捷方便不需要陷入内核态或者系统调用大大提高了通信的速度享有最快的进程间通信方式之名。但是便捷高效的共享内存通信带来新的问题多进程竞争同个共享资源会造成数据的错乱。 那么就需要信号量来保护共享资源以确保任何时刻只能有一个进程访问共享资源这种方式就是互斥访问。信号量不仅可以实现访问的互斥性还可以实现进程间的同步信号量其实是一个计数器表示的是资源个数其值可以通过两个原子操作来控制分别是 P 操作和 V 操作。 与信号量名字很相似的叫信号它俩名字虽然相似但功能一点儿都不一样。信号可以在应用进程和内核之间直接交互内核也可以利用信号来通知用户空间的进程发生了哪些系统事件信号事件的来源主要有硬件来源如键盘 CltrC 和软件来源如 kill 命令一旦有信号发生进程有三种方式响应信号 1. 执行默认操作、2. 捕捉信号、3. 忽略信号。有两个信号是应用进程无法捕捉和忽略的即 SIGKILL 和 SIGSTOP这是为了方便我们能在任何时候结束或停止某个进程。 前面说到的通信机制都是工作于同一台主机如果要与不同主机的进程间通信那么就需要 Socket 通信了。Socket 实际上不仅用于不同的主机进程间通信还可以用于本地主机进程间通信可根据创建 Socket 的类型不同分为三种常见的通信方式一个是基于 TCP 协议的通信方式一个是基于 UDP 协议的通信方式一个是本地进程间通信方式。 内核态和用户态区别内核态的底层操作有什么为什么要分两个不同的态 内核态和用户态是操作系统中的两种运行模式。它们的主要区别在于权限和可执行的操作 1、内核态Kernel Mode在内核态下CPU可以执行所有的指令和访问所有的硬件资源。这种模式下的操作具有更高的权限主要用于操作系统内核的运行。 2、用户态User Mode在用户态下CPU只能执行部分指令集无法直接访问硬件资源。这种模式下的操作权限较低主要用于运行用户程序。 内核态的底层操作主要包括内存管理、进程管理、设备驱动程序控制、系统调用等。这些操作涉及到操作系统的核心功能需要较高的权限来执行。 分为内核态和用户态的原因主要有以下几点 1、安全性通过对权限的划分用户程序无法直接访问硬件资源从而避免了恶意程序对系统资源的破坏。 2、稳定性用户态程序出现问题时不会影响到整个系统避免了程序故障导致系统崩溃的风险。 3、隔离性内核态和用户态的划分使得操作系统内核与用户程序之间有了明确的边界有利于系统的模块化和维护。 内核态和用户态的划分有助于保证操作系统的安全性、稳定性和易维护性。 mysql 一条语句问怎么加索引比较好 在MySQL中创建索引可以提高查询性能。为了给某个列添加索引我们可以使用以下语句 CREATE INDEX index_name ON table_name(column_name); 在这里index_name是你为索引指定的名称table_name是你要添加索引的表名而column_name是你要添加索引的列名。 在选择要添加索引的列时请考虑以下几点 1、对于经常用于查询条件的列添加索引可以提高查询速度。 2、对于具有许多重复值的列添加索引的性能提升可能不明显。 3、尽量避免在非常大的表上创建过多索引因为这会影响插入和更新操作的性能。 什么是联合索引 通过将多个字段组合成一个索引该索引就被称为联合索引。 比如将商品表中的 product_no 和 name 字段组合成联合索引(product_no, name)创建联合索引的方式如下 CREATE INDEX index_product_no_name ON product(product_no, name); 联合索引(product_no, name) 的 BTree 示意图如下图中叶子节点之间我画了单向链表但是实际上是双向链表原图我找不到了修改不了偷个懒我不重画了大家脑补成双向链表就行。 联合索引 可以看到联合索引的非叶子节点用两个字段的值作为 BTree 的 key 值。当在联合索引查询数据时先按 product_no 字段比较在 product_no 相同的情况下再按 name 字段比较。 也就是说联合索引查询的 BTree 是先按 product_no 进行排序然后再 product_no 相同的情况再按 name 字段排序。 因此使用联合索引时存在最左匹配原则也就是按照最左优先的方式进行索引的匹配。在使用联合索引进行查询的时候如果不遵循「最左匹配原则」联合索引会失效这样就无法利用到索引快速查询的特性了。 mysql的四种隔离级别 读未提交read uncommitted指一个事务还没提交时它做的变更就能被其他事务看到 读提交read committed指一个事务提交之后它做的变更才能被其他事务看到 可重复读repeatable read指一个事务执行过程中看到的数据一直跟这个事务启动时看到的数据是一致的MySQL InnoDB 引擎的默认隔离级别 串行化serializable会对记录加上读写锁在多个事务对这条记录进行读写操作时如果发生了读写冲突的时候后访问的事务必须等前一个事务执行完成才能继续执行 针对不同的隔离级别并发事务时可能发生的现象也会不同。 图片 也就是说 在「读未提交」隔离级别下可能发生脏读、不可重复读和幻读现象 在「读提交」隔离级别下可能发生不可重复读和幻读现象但是不可能发生脏读现象 在「可重复读」隔离级别下可能发生幻读现象但是不可能脏读和不可重复读现象 在「串行化」隔离级别下脏读、不可重复读和幻读现象都不可能会发生。 什么是脏读、幻读、不可重复读 脏读如果一个事务「读到」了另一个「未提交事务修改过的数据」就意味着发生了「脏读」现象。 不可重复读在一个事务内多次读取同一个数据如果出现前后两次读到的数据不一样的情况就意味着发生了「不可重复读」现象。 幻读在一个事务内多次查询某个符合查询条件的「记录数量」如果出现前后两次查询到的记录数量不一样的情况就意味着发生了「幻读」现象。 mysql的innodb如何避免不可重复读 mysql的默认隔离级别是可重复读可重复读隔离级别在开启事务后执行第一个selete 语句的时候会生成一个 Read View后面整个事务期间的selete都在用这个 Read View所以事务期间上读取的数据都是一致的不会出现前后读取的数据不一致的问题所以避免了不可重复读。 网络 输入网址后发生了什么 回答应用层DNS解析传输层TCP连接网络层IP数据链路MAC真实物理层接收到之后再一层层扒皮。 DNS解析的具体过程 DNS 域名解析简单地说就是把域名翻译成 IP 地址。例如把 www.baidu.com 这个域名翻译成对应 IP 220.181.38.251这里只是举个例子。 域名解析流程 上图中分 8 个步骤介绍了域名解析的流程但在此之前会先检查本机的缓存配置 hosts 解析然后才真正执行上图的流程 首先再进行dns服务器解析之前会查缓存总共有两次缓存的查询 浏览器缓存检查浏览器会首先搜索浏览器自身的 DNS 缓存缓存时间比较短大概只有1分钟且只能容纳 1000 条缓存看自身的缓存中是否有对应的条目而且没有过期如果有且没有过期则解析到此结束。 操作系统缓存检查 hosts 解析如果浏览器的缓存里没有找到对应的条目操作系统也会有一个域名解析的过程那么浏览器先搜索操作系统的 DNS 缓存中是否有这个域名对应的解析结果如果找到且没有过期则停止搜索解析到此结束。在 Linux 中可以通过 /etc/hosts 文件来设置可以将任何域名解析到任何能够访问的IP 地址。如果在这里指定了一个域名对应的 IP 地址那么浏览器会首先使用这个 IP地址。当解析到这个配置文件中的某个域名时操作系统会在缓存中缓存这个解析结果缓存的时间同样是受这个域名的失效时间和缓存的空间大小控制的。 接着就进行dns解析 第一步客户端通过浏览器访问域名为 www.baidu.com (http://www.baidu.com) 的网站发起查询该域名的 IP 地址的 DNS 请求。该请求发送到了本地 DNS 服务器上。本地 DNS 服务器会首先查询它的缓存记录如果缓存中有此条记录就可以直接返回结果。如果没有本地 DNS 服务器还要向 DNS 根服务器进行查询。 第二步本地 DNS 服务器向根服务器发送 DNS 请求请求域名为 www.baidu.com (http://www.baidu.com) 的 IP 地址。 第三步根服务器经过查询没有记录该域名及 IP 地址的对应关系。但是会告诉本地 DNS 服务器可以到域名服务器上继续查询并给出域名服务器的地址(.com 服务器)。 第四步本地 DNS 服务器向 .com 服务器发送 DNS 请求请求域名 www.baidu.com (http://www.baidu.com) 的 IP 地址。 第五步com 服务器收到请求后不会直接返回域名和 IP 地址的对应关系而是告诉本地DNS 服务器该域名可以在 baidu.com 域名服务器上进行解析获取 IP 地址并告诉 baidu.com 域名服务器的地址。 第六步本地 DNS 服务器向 baidu.com 域名服务器发送 DNS 请求请求域名 www.baidu.com (http://www.baidu.com) 的 IP 地址。 第七步baidu.com 服务器收到请求后在自己的缓存表中发现了该域名和 IP 地址的对应关系并将 IP 地址返回给本地 DNS 服务器。 第八步本地 DNS 服务器将获取到与域名对应的 IP 地址返回给客户端并且将域名和 IP 地址的对应关系保存在缓存中以备下次别的用户查询时使用。 最后引用大佬的一张图做下总结 TCP拆包沾包原因 TCP拆包和沾包现象是由于TCP协议的特性以及网络传输过程中的各种因素所导致的。 1、TCP协议是基于字节流的传输层协议没有固定的分包边界。发送方将数据分成多个小的数据包进行传输接收方再将这些数据包组合成完整的数据。在这个过程中可能会出现拆包和沾包现象。 2、网络传输中的延迟和拥塞会影响数据包发送的速度和到达接收方的顺序。这可能导致数据包的拆分和组合不规律从而出现拆包和沾包现象。 3、接收方的缓冲区大小限制。当接收方的缓冲区不足以容纳一个完整的数据包时可能会将数据包拆分成多个部分导致拆包现象。 为了解决TCP拆包和沾包的问题可以采用以下方法 4、在应用层实现数据包的边界识别例如通过添加包头包头中包含数据包长度等信息使得接收方能够准确地将数据包进行拼接。 5、使用固定长度的数据包或者特殊的分隔符以便于接收方识别数据包的边界。 6、使用更高级的传输层协议如WebSocket它在TCP基础上增加了数据帧的概念可以更好地解决拆包和沾包问题。 算法 手写LRU 面试感受 照着简历模块挑八股问八股也很基础没问项目进入二面了。
http://www.dnsts.com.cn/news/139195.html

相关文章:

  • 门户网站cms系统嘉兴网站广优化公司
  • 建网站过程网站建设试卷摄影
  • 淘宝网站店铺请人做seo基础入门免费教程
  • 沂水网站设计个人网页设计图片背景图
  • 网站建设流程多少钱wordpress 4.7.4 主题
  • 北京期刊网站建设蔷薇花园网站怎么做的
  • 做一款什么网站赚钱上海公司代理注册公司
  • 免费男人做那个的视频网站郑州哪有做网站的公司
  • 网站流量利用沈阳正规的男科医院排名
  • 长沙百度网站排名优化注册安全工程师报考条件及科目
  • 网站程序盗版爱网站官网
  • 广东南方通信建设有限公司官方网站什么叫网站策划书
  • 南宁品牌网站建设公司制作网页完整步骤手机版
  • 2016年做网站能赚钱吗百度 云上传wordpress 失败
  • 做透明头像的网站win2008怎么做网站
  • 营销型网站结构图怎么查在哪个网站做的备案
  • 东阳厂家高端网站设计怎么制作公众号二维码
  • 自己做电影网站需要什么4s店网站建设
  • 大型搜索网站开发成都网站建设公司哪家专业
  • 找程序员做网站vestacp配置wordpress
  • 程序员知识网站需要多少钱家装公司网站建设
  • 电商行业建设网站wordpress评论外链
  • js打开本wordpress邯郸网站优化建设
  • 广州中学生网站制作成全视频观看免费高清中国电视剧
  • 网站定制开发什么意思手机网站建设视频教程、
  • 华山论剑西凤酒网站建设成都微信网站建设报价
  • 企业网站开发工资精品网课
  • 学校校园网站 资源建设方案纪实摄影网站推荐
  • 国内做化妆刷的比较好的网站网站界面模板下载
  • 广告联盟自动挂机赚钱windows优化大师怎么用