`

面试题记录1

 
阅读更多
  1. 操作系统的进程数很多,使用内存很多时,系统怎样确保某个进程获得大的内存(4G)
  2.  操作系统物理内存与虚拟内存
  3. 操作系统内存分配方式,怎样减少内存碎片
  4. 操作系统的堆与栈的区别? 
  5. 操作系统栈与堆内存怎样分配地址(向上or向下)
  6. 信号与信号量是不是一样
  7. 并发包的使用,ConcurrentHashMap实现并发的原理
  8. 判断对象是否可被垃圾收集算法
  9. 引用计数算法的原理,缺点,商业虚拟机怎么实现
  10. java内存从逻辑上分为哪些区
  11. 那些对象会存在永久代
  12. jsp与servlet的区别
  13. forword与redirect
  14. REST架构描述
  15. sql 有哪些join
  16. 视图有什么作用,能加快数据查询吗
  17. 编程题:找出一个字符串中的最大回文,正序与倒序相等,如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

    面试题及面试题记录.zip

    2018iOS面试题汇总

    本文档记录了18年大致的iOS面试题,希望对各位同道有所帮助

    大数据面试题分类记录.rar

    大数据面试题整理,有道云笔记版以及pdf版,有道云笔记直接导入即可查看,认真整理了部分面试题,还有一些参考链接在里面,根据需要再自行查看 今日更新,增加了题目分类,方便查看

    各大IT公司面试题集合

    │ JAVA面试题集(1) -- 最大的IT资源网.txt │ JAVA面试题集(2) -- 最大的IT资源网.txt │ JAVA面试题集(3) -- 最大的IT资源网.txt │ JAVA面试题集(4) -- 最大的IT资源网.txt │ JAVA面试题集(5) --...

    (完整版)公司结构化面试试题及记录.pdf

    (完整版)公司结构化面试试题及记录.pdf

    剑指offer面试题python题解(做题记录).zip

    python面试题、知识点,用于程序员应聘学习参考,提供代码+题型等资料 python面试题、知识点,用于程序员应聘学习参考,提供代码+题型等资料 python面试题、知识点,用于程序员应聘学习参考,提供代码+题型等资料 ...

    前端大厂最新面试题-面试记录流水记录.docx

    前端大厂最新面试题-面试记录流水记录.docx

    软件测试经典面试题 (超实用)

    开发及环境搭建类面试题 28 1、描述软件产生内存泄露的原因以及检查方式。(可以结合一种开发语言进行描述) 28 2、简述什么是值传递,什么是地址传递,两者区别是什么? 28 3、结构化程序设计和面向对象程序设计...

    java面试题以及技巧

    │ 上海税友软件 面试题.doc │ 公司培训文档-混淆的基本概念.doc │ 基本算法.doc │ 孙卫琴精通struts.基于MVC的.java.web设计与开发.pdf │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科...

    sql模拟面试题.

    sql模拟面试题

    mysql优化及基础面试题

    mysql优化及基础面试题。 什么是慢查询 慢查询日志,顾名思义,就是查询慢的日志,是指 mysql 记录所有执行超过 long_query_time 参数设定的时间阈值的 SQL 语句的日志。该日志能为 SQL 语句的优化带来很好的帮助...

    110道 MySQL面试题及答案

    这份文档包含了110道MySQL面试题及其答案,旨在帮助准备MySQL面试的人更好地准备和学习。 ## 查询语句 1. 如何查询表中的所有记录? 答案:使用SELECT语句,例如:SELECT * FROM table_name; 1. 如何查询表中的...

    mybatis面试题(经典问答)

    mybatis面试题(经典问答) 1、JDBC有多少步? JDBC可以分为六个步骤 负载驱动程序 获取数据库连接 创建语句对象 操作数据库进行增删改查 获取结果集 关闭资源 2.什么是mybatis? 如果你在面试中被问到,只需说以下...

    java 面试题记录.zip

    Java前后开发面试题,大厂进阶之路,基于JavaGuide、Cyc大佬、牛客上的面经及王道考研相关视频,并改进了其中说法矛盾或含糊之处。 包含计算机网络知识、JavaSE、JVM、Spring、Springboot、SpringCloud、Mybatis、多...

    记录一些MySQL、Redis面试题以及一些常见的算法题 获取最新MySQL面试题

    记录一些MySQL、Redis面试题以及一些常见的算法题。 获取最新MySQL面试题。

    高频的50个 MySQL 面试题含详细讲解

    MySQL面试题以及答案整理【最新版】MySQL高级面试题大全,发现网上很多MySQL面试题都没有答案,所以花了很长时间搜集,本套MySQL面试题大全,汇总了大量经典的MySQL程序员面试题以及答案,包含MySQL语言常见面试题、...

    MySQL数据库高级工程师-面试题-MySQL DBA面试题01-风哥整理(面试必过)

    1.1 1、MySQL 的复制原理以及流程 (1)、复制基本原理流程 1. 主:binlog 线程——记录下所有改变了数据库数据的语句,放进master 上的binlog 中; 2. 从:io 线程——在使用start slave...更多面试题,请下载附件......

    史上最全 55道 MySQL面试题及答案,看完碾压面试官

    MySQL面试题以及答案整理【最新版】MySQL高级面试题大全,发现网上很多MySQL面试题都没有答案,所以花了很长时间搜集,本套MySQL面试题大全,汇总了大量经典的MySQL程序员面试题以及答案,包含MySQL语言常见面试题、...

    快钱支付信息科技java面试题整理

    文档是小弟面试完,回来即整理的几类问题,大至把面试题都记录了下来, 所以还未有完整正确答案,大家对照问题,百度去吧~!

    java面试题笔记(个人记录)

    java面试题笔记(个人记录)

Global site tag (gtag.js) - Google Analytics