- 操作系统的进程数很多,使用内存很多时,系统怎样确保某个进程获得大的内存(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;
}
}
相关推荐
以下是对"大数据面试题分类记录"中可能涉及的一些核心知识点的详细说明: 1. **数据处理**:这部分可能会涉及到数据清洗、数据预处理、ETL(提取、转换、加载)流程、数据集成和数据质量控制。例如,如何处理缺失值...
这份"面试题及面试题记录.zip"文件包含两份资源:Java面试题宝典V7.pdf和面试真题汇总.xlsx,它们提供了丰富的面试问题和可能的答案,帮助求职者准备Java相关的面试。以下是基于这些文件名推测的一些重要知识点: 1...
#### 颇具挑战性的SQL面试题——删除冗余记录 **题目背景与分析** 在本题中,我们面对的是一个常见的问题:如何有效地处理数据库中的冗余数据。在实际应用中,由于各种原因(如数据导入错误、系统故障等),数据库...
│ JAVA面试题集(1) -- 最大的IT资源网.txt │ JAVA面试题集(2) -- 最大的IT资源网.txt │ JAVA面试题集(3) -- 最大的IT资源网.txt │ JAVA面试题集(4) -- 最大的IT资源网.txt │ JAVA面试题集(5) --...
以下是对这些领域的基础面试题及答案的详细解读。 一、Java 面试题 1. **Java 的特点:** Java 以其跨平台性、安全性、高性能、面向对象等特性受到广泛欢迎。它的“一次编写,到处运行”理念使得代码能在多种操作...
数据库面试题涵盖了数据库基础知识、数据结构、算法、面向对象编程、软件工程以及特定数据库系统(如Visual FoxPro和SQL)的使用等多个方面。以下是这些题目所涉及的关键知识点的详细解释: 1. **算法的执行效率与...
"C# Winform 面试题详解" C# Winform 面试题详解 1. foreach 遍历访问的对象需要实现 IEnumerable 接口或声明 GetEnumerator 方法的类型 在 C# 中,foreach 语句可以遍历实现了 IEnumerable 接口或声明了 ...
【Delphi面试题 Delphi题目】的解析涵盖了多个Delphi编程和数据库操作的知识点,以下是详细解答: 1. Delphi元件派生: - 如果一个元件希望放到IDE的元件面板上,它必须从(TComponent)类派生。 - 如果一个元件能...
面试题记录最后一班了难
为了在Java面试中脱颖而出,了解和掌握常见的面试题及答案至关重要。以下是一些关键知识点的详细解析: 1. **super()与 this()的区别** `super()`用于调用父类的构造器,确保子类实例化时父类的初始化;`this()`则...
在软件测试的面试题中,我们通常会遇到以下知识点: 1. 软件测试的目的与原则: - 目的:测试的主要目的是发现软件中的缺陷,降低产品开发风险,并记录软件运行的数据以提供决策支持。 - 原则:其中的“缺陷集群...
Socket 编程面试题 TCP 和 UDP 的区别: 1. 连接方式:TCP 提供面向连接的传输,通信前需要建立连接(三次握手机制);UDP 提供无连接的传输,通信前不需要建立连接。 2. 可靠性:TCP 提供可靠的传输(有序、无...
SQL Server高频面试题及答案 数据库基础知识篇 1. 主键、外键、超键、候选键 超键是关系模式中能唯一标识元组的属性集。候选键是最小超键,即没有冗余元素的超键。主键是数据库表中对储存数据对象予以唯一和完整...
建立CMDB(配置管理数据库),记录服务器的系统、配置和应用信息,方便查询和管理。 RAID(冗余磁盘阵列)技术可以将多个硬盘整合为一个大磁盘并提供冗余备份。RAID 0提供高速读写但无冗余,一旦硬盘损坏,数据丢失...
计算机常见算法面试题 本资源摘要信息涵盖了计算机常见算法面试题,主要涉及链表、字符串操作、搜索算法等方面的知识点。下面是对标题、描述、标签和部分内容的详细解释: 标题:计算机常见算法面试题 该标题表明...
【标题】"新浪PHP面试题"所涉及到的知识点主要涵盖了PHP编程语言在实际应用和面试中的常见问题。作为中国知名互联网公司新浪的面试题目,这些题目反映了新浪对PHP开发人员的技术要求和期望。 【描述】虽然描述部分...
python面试题、知识点,用于程序员应聘学习参考,提供代码+题型等资料 python面试题、知识点,用于程序员应聘学习参考,提供代码+题型等资料 python面试题、知识点,用于程序员应聘学习参考,提供代码+题型等资料 ...
SQL 面试题 SQL(Structured Query Language)是一种特殊-purpose 编程语言,用于管理关系数据库管理系统(RDBMS)。SQL 面试题是 IT 行业中非常重要的一部分,涵盖了数据库管理、数据查询、数据操作等方面的知识。...
ERP 面试题解析 本资源摘要信息将针对 ERP 面试题,详细解析每个问题,提供相关知识点和概念,帮助读者更好地理解 ERP 相关知识。 1. 什么是 ERP、MRP 及 MRPⅡ?它们的英文完整拼写分别是什么? ERP 企业资源...