- 操作系统的进程数很多,使用内存很多时,系统怎样确保某个进程获得大的内存(4G)
- 操作系统物理内存与虚拟内存
- 操作系统内存分配方式,怎样减少内存碎片
- 操作系统的堆与栈的区别?
- 操作系统栈与堆内存怎样分配地址(向上or向下)
- 信号与信号量是不是一样
- 并发包的使用,ConcurrentHashMap实现并发的原理
- 判断对象是否可被垃圾收集算法
- 引用计数算法的原理,缺点,商业虚拟机怎么实现
- java内存从逻辑上分为哪些区
- 那些对象会存在永久代
- jsp与servlet的区别
- forword与redirect
- REST架构描述
- sql 有哪些join
- 视图有什么作用,能加快数据查询吗
- 编程题:找出一个字符串中的最大回文,正序与倒序相等,如abcba
1. 操作系统的进程数很多,使用内存很多时,系统怎样确保某个进程获得大的内存(4G)
2. 操作系统物理内存与虚拟内存
使用虚拟内存,参考: http://baike.baidu.com/view/976.htm
3 操作系统内存分配方式,怎样减少内存碎片
包括:单一连续分配, 固定分区分配, 动态分区分配, 分段存储管理, 分页存储管理
参考:内存的分配方式 http://blog.chinaunix.net/uid-26874138-id-3173243.html
内存连续分配管理方式 http://c.biancheng.net/cpp/html/2610.html
内存非连续分配管理方式 http://c.biancheng.net/cpp/html/2611.html
内存碎片 http://baike.baidu.com/view/2353026.htm
http://zhidao.baidu.com/link?url=JRsEfYN2F32NI5RoGZR2qQPQZM0dgEWigZrw7NObKgRHktc4Ja6CMxX6ARn-0daGazQQcHBuJ_pXFsgn9m0s8_
4. 操作系统的堆与栈的区别?
5. 操作系统栈与堆内存怎样分配地址(向上or向下)
申请效率的比较:
栈由系统自动分配,速度较快。但程序员是无法控制的。
堆是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来最方便.
生长方向:
对于堆来讲,生长方向是向上的,也就是向着内存地址增加的方向;对于栈来讲,它的生长方向是向下的,是向着内存地址减小的方向增长。
申请大小的限制:
栈:在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,在WINDOWS下,栈的大小是2M(也有的说是1M,总之是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间时,将提示overflow。因此,能从栈获得的空间较小。
堆:堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存。由此可见,堆获得的空间比较灵活,也比较大。
参考: 内存分配---堆和栈 http://szshdy.blog.163.com/blog/static/13220125120103128313403/
浅析栈区和堆区内存分配的区别 http://www.jb51.net/article/40513.htm
6. 信号与信号量是不是一样?
1.信号:(signal)是一种处理异步事件的方式。信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程外,还可以发送信号给进程本身。linux除了支持unix早期的信号语义函数,还支持语义符合posix.1标准的信号函数sigaction。
2.信号量:(Semaphore)进程间通信处理同步互斥的机制。是在多线程环境下使用的一种设施, 它负责协调各个线程, 以保证它们能够正确、合理的使用公共资源。
参考: 信号量 http://baike.baidu.com/view/1303265.htm
7. 并发包的使用,ConcurrentHashMap实现并发的原理
深入剖析ConcurrentHashMap:
http://ifeve.com/java-concurrent-hashmap-1/
http://ifeve.com/java-concurrent-hashmap-2/
1. 使用多个锁对象(分离锁)实现高并发。ConcurrentHashMap包含segment数组,每个segment维持一个锁
2. 获取操作(包括 get)通常不会受阻塞
ReentrantLock和synchronized两种锁定机制的对比 http://www.ibm.com/developerworks/cn/java/j-jtp10264/index.html
ReentrantLock 与 synchronized的比较:
ReentrantLock优点:
一些 synchronized 所没有的特性,比如时间锁等候、可中断锁等候、无块结构锁、多个条件变量或者轮询锁。 ReentrantLock 还具有可伸缩性的好处,它的实现在争用下提供了更好的性能。
synchronized优点:
在使用 synchronized 的时候,不会忘记释放锁;在退出 synchronized 块时,JVM 会自动为您做这件事。而在使用ReentrantLock时,您很容易忘记用 finally 块释放锁,这对程序非常有害(出现死锁等)。
当 JVM 用 synchronized 管理锁定请求和释放时,JVM 在生成线程转储时能够包括锁定信息。这些对调试非常有价值,因为它们能标识死锁或者其他异常行为的来源。 Lock 类只是普通的类,JVM 不知道具体哪个线程拥有 Lock 对象。
是否需要用 ReentrantLock:
大多数情况下,您不应当选择ReentrantLock, synchronized 工作得很好,可以在所有 JVM 上工作,更多的开发人员了解它,而且不太容易出错。只有在真正需要 Lock 的时候才用它。在这些情况下,您会很高兴拥有这款工具。
8. 判断对象是否可被垃圾收集算法
9. 引用计数算法的原理,缺点,商业虚拟机怎么实现
一、对象存活判定算法
1、引用计数算法
原理: 给对象添加一个引用计数器,每当有一个地方引用它时,计数器加1;引用失效时,计数器减1;计数器为0说明可被回收。
缺点 :很难解决对象相互循环引用的问题(对象相互循环引用,但其实他们都已经没有用了)。
2、可达性分析算法
java虚拟机采用的算法。
原理 :通过一些列称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可用的。
参考: http://www.350351.com/bianchengyuyan/JVM/78728.html
10. java内存从逻辑上分为哪些区
Java运行时数据区域包括程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区。
参考:
http://www.350351.com/bianchengyuyan/JVM/449770.html
http://286.iteye.com/blog/1928180
11. 那些对象会存在永久代
永久代即是方法区,方法区是所有线程共享的,存储了类信息、常量、静态变量、即时编译器编译后的代码等数据。
方法区中对于每个类存储了以下数据:
a.类及其父类的全限定名(java.lang.Object没有父类)
b.类的类型(Class or Interface)
c.访问修饰符(public, abstract, final)
d.实现的接口的全限定名的列表
e.常量池
f.字段信息
g.方法信息
h.静态变量
i.ClassLoader引用
j.Class引用
参考:
浅析Java虚拟机结构与机制 http://blog.hesey.net/2011/04/introduction-to-java-virtual-machine.html
12. jsp与servlet的区别
JSP在本质上就是SERVLET,但是两者的创建方式不一样.Servlet完全是JAVA程序代码构成擅长于流程控制和事务处理而通过Servlet来生成动态网页;
JSP由HTML代码和JSP标签构成,可以方便地编写动态网页,因此在实际应用中采用Servlet来控制业务流程,而采用JSP来生成动态网页.在struts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层.
参考: http://blog.chinaunix.net/uid-26284395-id-3038122.html
Servlet的生命周期
一个servlet的生命周期由部署servlet的容器来控制。当一个请求映射到一个servlet时,该容器执行下列步骤。
1. 如果一个servlet的实例并不存在,Web容器
a. 加载servlet类。
b. 创建一个servlet类的实例。
c. 调用init初始化servlet实例。该初始化过程将在初始化servlet中讲述。
2. 调用service方法,传递一个请求和响应对象。服务方法将在编写服务方法中讲述。
3. 如果该容器要移除这个servlet,可调用servlet的destroy方法来结束该servlet。
13. forword与redirect
forword转发是服务器行为,redirect重定向是客户端行为。
1.从地址栏显示来说forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.
2.从数据共享来说forward:转发页面和转发到的页面可以共享request里面的数据.redirect:不能共享数据.
3.从运用地方来说forward:一般用于用户登陆的时候,根据角色转发到相应的模块.redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.
4.从效率来说forward:高. redirect:低.
参考: http://zhulin902.iteye.com/blog/939049
14. REST架构描述
REST http://zh.wikipedia.org/zh/REST
SOAP http://baike.baidu.com/view/60663.htm
基于REST架构的Web Service设计 http://www.williamlong.info/archives/1728.html
Web 服务编程,REST 与 SOAP http://www.ibm.com/developerworks/cn/webservices/0907_rest_soap/
SOAP采用了已经广泛使用的两个协议:HTTP 和XML(标准通用标记语言下的一个子集),REST通常基于使用HTTP,URI,和XML(标准通用标记语言下的一个子集)以及HTML(标准通用标记语言下的一个应用)这些现有的广泛流行的协议和标准。
RESTful Web 服务使用标准的 HTTP 方法 (GET/PUT/POST/DELETE) 来抽象所有 Web 系统的服务能力,而不同的是,SOAP 应用都通过定义自己个性化的接口方法来抽象 Web 服务,这更像我们经常谈到的 RPC。
与 REST 架构相比,SOAP 架构图明显不同的是:所有的 SOAP 消息发送都使用 HTTP POST 方法,并且所有 SOAP 消息的 URI 都是一样的,这是基于 SOAP 的 Web 服务的基本实践特征
典型的基于 SOAP 的 Web 服务以操作为中心,每个操作接受 XML 文档作为输入,提供 XML 文档作为输出。在本质上讲,它们是 RPC 风格的。而在遵循 REST 原则的 ROA 应用中,服务是以资源为中心的,对每个资源的操作都是标准化的 HTTP 方法。
REST 的应用可以充分地挖掘 HTTP 协议对缓存支持的能力, 基于 SOAP 应用很难充分发挥 HTTP 本身的缓存能力。
15. sql 有哪些join
JOIN(INNER JOIN): 如果表中有至少一个匹配,则返回行
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行
16. 视图有什么作用,能加快数据查询吗
数据视图 http://baike.baidu.com/view/2141314.htm视图的作用 http://www.cnblogs.com/sunzhiyue/archive/2011/12/12/2284853.html
不会加快查询速度
视图和表的区别和联系
区别:1、视图是已经编译好的sql语句。而表不是
2、视图没有实际的物理记录。而表有。
3、表是内容,视图是窗口
4、表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,表可以及时对它进行修改,但视图只能有创建的语句来修改
5、表是内模式,视图是外模式
6、视图是查看数据表的一种方法,可以查询数据表中某些字段构成的数据,只是一些SQL语句的集合。从安全的角度说,视图可以不给用户接触数据表,从而不知道表结构。
7、表属于全局模式中的表,是实表;视图属于局部模式的表,是虚表。
8、视图的建立和删除只影响视图本身,不影响对应的基本表。
联系:视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系。
17. 编程题:找出一个字符串中的最大回文,正序与倒序相等,如abcba
算法实现:
public class Test {
public static void main(String[] args) {
String s = getLongestHuiWen("123abcdcba3awaht");
ConcurrentHashMap
System.out.println(s);
}
public static String getLongestHuiWen(String str) {
if (null == str) {
return null;
}
String longestHuiWen = null;
int huiWebLength = 0;
String newStr = str;
while(newStr.length() > 0) {
StringBuilder builder1 = new StringBuilder(newStr);
String newStr2 = newStr;
while (newStr2.length() > 1) {
if (isHuiWen(newStr2)) {
if (newStr2.length() > huiWebLength) {
huiWebLength = newStr2.length();
longestHuiWen = newStr2;
break;
}
}
StringBuilder builder2 = new StringBuilder(newStr2);
builder2.deleteCharAt(newStr2.length() - 1);
newStr2 = builder2.toString();
}
builder1.deleteCharAt(0);
newStr = builder1.toString();
}
return longestHuiWen;
}
private static boolean isHuiWen(String str) {
if (str.equals(new StringBuilder(str).reverse().toString())) {
return true;
}
return false;
}
}
相关推荐
面试题及面试题记录.zip
本文档记录了18年大致的iOS面试题,希望对各位同道有所帮助
大数据面试题整理,有道云笔记版以及pdf版,有道云笔记直接导入即可查看,认真整理了部分面试题,还有一些参考链接在里面,根据需要再自行查看 今日更新,增加了题目分类,方便查看
│ JAVA面试题集(1) -- 最大的IT资源网.txt │ JAVA面试题集(2) -- 最大的IT资源网.txt │ JAVA面试题集(3) -- 最大的IT资源网.txt │ JAVA面试题集(4) -- 最大的IT资源网.txt │ JAVA面试题集(5) --...
(完整版)公司结构化面试试题及记录.pdf
python面试题、知识点,用于程序员应聘学习参考,提供代码+题型等资料 python面试题、知识点,用于程序员应聘学习参考,提供代码+题型等资料 python面试题、知识点,用于程序员应聘学习参考,提供代码+题型等资料 ...
前端大厂最新面试题-面试记录流水记录.docx
开发及环境搭建类面试题 28 1、描述软件产生内存泄露的原因以及检查方式。(可以结合一种开发语言进行描述) 28 2、简述什么是值传递,什么是地址传递,两者区别是什么? 28 3、结构化程序设计和面向对象程序设计...
│ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ 孙卫琴精通struts.基于MVC的.java.web设计与开发.pdf │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科...
sql模拟面试题
mysql优化及基础面试题。 什么是慢查询 慢查询日志,顾名思义,就是查询慢的日志,是指 mysql 记录所有执行超过 long_query_time 参数设定的时间阈值的 SQL 语句的日志。该日志能为 SQL 语句的优化带来很好的帮助...
这份文档包含了110道MySQL面试题及其答案,旨在帮助准备MySQL面试的人更好地准备和学习。 ## 查询语句 1. 如何查询表中的所有记录? 答案:使用SELECT语句,例如:SELECT * FROM table_name; 1. 如何查询表中的...
mybatis面试题(经典问答) 1、JDBC有多少步? JDBC可以分为六个步骤 负载驱动程序 获取数据库连接 创建语句对象 操作数据库进行增删改查 获取结果集 关闭资源 2.什么是mybatis? 如果你在面试中被问到,只需说以下...
Java前后开发面试题,大厂进阶之路,基于JavaGuide、Cyc大佬、牛客上的面经及王道考研相关视频,并改进了其中说法矛盾或含糊之处。 包含计算机网络知识、JavaSE、JVM、Spring、Springboot、SpringCloud、Mybatis、多...
记录一些MySQL、Redis面试题以及一些常见的算法题。 获取最新MySQL面试题。
MySQL面试题以及答案整理【最新版】MySQL高级面试题大全,发现网上很多MySQL面试题都没有答案,所以花了很长时间搜集,本套MySQL面试题大全,汇总了大量经典的MySQL程序员面试题以及答案,包含MySQL语言常见面试题、...
1.1 1、MySQL 的复制原理以及流程 (1)、复制基本原理流程 1. 主:binlog 线程——记录下所有改变了数据库数据的语句,放进master 上的binlog 中; 2. 从:io 线程——在使用start slave...更多面试题,请下载附件......
MySQL面试题以及答案整理【最新版】MySQL高级面试题大全,发现网上很多MySQL面试题都没有答案,所以花了很长时间搜集,本套MySQL面试题大全,汇总了大量经典的MySQL程序员面试题以及答案,包含MySQL语言常见面试题、...
文档是小弟面试完,回来即整理的几类问题,大至把面试题都记录了下来, 所以还未有完整正确答案,大家对照问题,百度去吧~!
java面试题笔记(个人记录)