面试宝典
make_a_great_effort
IT小白
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
计算机网络
一、计算机网络的体系结构OSI的体系结构:物理层、数据链路层、网络层、运输层、会话层、表现层、应用层;TCP/IP的体系结构:应用层(各种应用层协议:telnet,ftp,smtp等)、运输层(TCP/UDP)、网际层IP、网络接口层五层协议的体系结构:物理层、数据链路层、网络层、运输层、应用层。下图来自经典教材:计算机网络(谢希仁)物理层:通过媒介传输比特,确定机械及电气...原创 2019-03-19 15:18:29 · 258 阅读 · 0 评论 -
线程池
new Thread的弊端如下:a. 每次new Thread新建对象性能差。b. 线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机或oom。c. 缺乏更多功能,如定时执行、定期执行、线程中断。相比new Thread,Java提供的四种线程池的好处在于:a. 重用存在的线程,减少对象创建、消亡的开销,性能佳。b. 可有效控制最大并发线程数,提高系统...原创 2019-04-17 19:08:25 · 224 阅读 · 0 评论 -
死锁产生的必要条件和避免死锁的方法
死锁产生的必要条件:互斥条件:一个资源只能被一个一个进程使用占有且等待:一个进程因请求资源而被阻塞时,对已经获得的资源保持占有状态;不可强行占有:进程已经获得的资源不会被其他进程抢占;循环等待:若干进程间产生一种循环等待的条件,比如A等待B释放资源,B等待A释放资源。避免死锁的方法:给锁加上顺序确保所有的线程都是按照相同的顺序获得锁,那么死锁就不会发生。这种方式需要...原创 2019-04-17 17:11:53 · 370 阅读 · 0 评论 -
乐观锁与悲观锁
悲观锁就是一次只能有一个持有锁的线程执行,其他线程只能在入口处等待资源释放。乐观锁就是不加锁的去执行操作,操作完成后会进行冲突检测,如果发生了冲突就重试,直到成功为止。动手实现一个简单的乐观锁(转)。/** * 乐观锁 * * 场景:有一个对象value,需要被两个线程调用,由于是共享数据,存在脏数据的问题 * 悲观锁可以利用synchronized实现,这里不提. ...原创 2019-04-17 16:34:21 · 180 阅读 · 0 评论 -
数据库的面试知识点
作者:Redfisky链接:https://www.nowcoder.com/discuss/149285来源:牛客网一、共享锁,排他锁InnoDB普通 select 语句默认不加锁(快照读,MYISAM会加锁),而CUD操作默认加排他锁 MySQL InnoDB存储引擎,实现的是基于多版本的并发控制协议——MVCC (Multi-Version Concurrency Contro...转载 2019-04-13 15:43:25 · 196 阅读 · 0 评论 -
hashmap和currentHashmap
hashmap 1.7和1.8 的区别数据结构上:1.7使用数组+链表+头插法1.8使用数组+链表+红黑树+尾插法hash的扰动函数:1.7 5次异或+4次位运算1.8 1次异或+1次位运算扩容机制的实现:1.7扩容两倍;计算原hashmap中的数据在新hashmap中的位置,使用&运算;设置新的阈值;放入最新的值。1.8异常判断;...原创 2019-04-16 10:47:31 · 433 阅读 · 0 评论 -
mysql的两种主要引擎
Innodb引擎(该引擎在5.5后的MySQL数据库中为默认存储引擎。)Innodb引擎提供了对数据库ACID事务的支持。并且还提供了行级锁和外键的约束。它的设计的目标就是处理大数据容量的数据库系统。它本身实际上是基于Mysql后台的完整的系统。Mysql运行的时候,Innodb会在内存中建立缓冲池,用于缓冲数据和索引。但是,该引擎是不支持全文搜索的。同时,启动也比较的慢,它是不会保存表的行数...转载 2019-04-12 21:35:50 · 189 阅读 · 0 评论 -
volatile关键字
转载自:https://www.cnblogs.com/dolphin0520/p/3920373.html 一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语义: 1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。 2)禁止进行指令重排序。先看一段代码,假如线程1先执行...转载 2019-04-12 17:05:16 · 143 阅读 · 0 评论 -
Java线程总结
一、什么是线程线程的定义比较简单,不要把它和进程搞混了就行。进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程。(进程是资源分配的最小单位)线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。(线程是cpu调度的最小单位)二、实现线程的方式和比较继承Thread类和实现runn...转载 2019-04-12 16:10:09 · 153 阅读 · 0 评论 -
设计模式
一、设计模式的概念设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。二、设计模式的七大原则1、单一职责原则 ( SRP )英文全称是Single Respon...转载 2019-04-08 21:39:59 · 239 阅读 · 0 评论 -
操作系统——进程与线程
进程的定义程序:就是一个指令序列系统为每个运行的程序配置一个数据结构,称为进程控制块(PCB),用来描述进程的各种信息(如程序代码存放的位置)。进程=PCB+程序(程序段+数据段),PCB是进程存在的唯一标志。创建进程就是创建PCB,撤销进程就是撤销PCB。进程(动态性)是进程实体(静态性)的运行过程,是系统进行资源分配和调度的一个独立单位。PCB:操作系统通过PCB来管...原创 2019-04-10 21:01:34 · 4221 阅读 · 18 评论 -
常见Java技术总结
1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”?Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。2.“static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?“static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的...转载 2019-03-27 15:15:52 · 767 阅读 · 0 评论 -
腾讯面经总结
1.static关键字总结java编程思想中:static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。static 方法static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有thi...原创 2019-03-30 18:05:30 · 288 阅读 · 0 评论 -
Java工程师能力评估
1.下面有关JVM内存,说法错误的是?程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程隔离的虚拟机栈描述的是Java方法执行的内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的方法区用于存储JVM加载的类信息、常量、静态变量、以及编译器编译后的代码等数据,是线程隔离的原则上讲,所有的对象都在堆区上分配内存,是线...原创 2019-03-17 15:18:45 · 1600 阅读 · 0 评论 -
无锁状态,偏向锁状态,轻量级锁状态和重量级锁
锁可以升级但不能降级,意味着偏向锁升级成轻量级锁后不能降级成偏向锁。这种锁升级却不能降级的策略,目的是为了提高获得锁和释放锁的效率偏向锁偏向锁的目的是在某个线程获得锁之后,消除这个线程锁重入(CAS)的开销,看起来让这个线程得到了偏护 偏向锁使用了一种等到竞争出现才释放锁的机制,所以当其他线程尝试竞争偏向锁时,持有偏向锁的线程才会释放锁自旋锁线程的阻塞和唤醒需要CPU从用户态转...转载 2019-04-17 19:37:11 · 898 阅读 · 0 评论
分享