day014 【程序员面试宝典】

Java垃圾回收机制

  • basic
    1.引用计数算法【引用计数算法对于对象之间相互循环引用问题难以解决,因此java并没有使用引用计数算法。但是python中两种都有。】
    2.根搜索算法【通过一系列的名为“GC Root”的对象作为起点,从这些节点向下搜索,不可达节点的内存将被回收。】
    主流的商用程序语言C#、java和Lisp都使用根搜素算法进行内存管理。

空闲时回收引用,而不是对象本身。
还有显式调用函数产生垃圾回收。
程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交给了JVM来处理。

栈中的内存基本确定,垃圾回收重点关注的是堆和方法区部分的内存。

  • 可作为GC Root的对象包括以下几种对象
    有四种,具体的不记了。

  • 垃圾收集算法
    http://www.2cto.com/kf/201401/272681.html

  • 感觉如果不了解具体实现的话,很难真正了解它的优缺点。

  • http://blog.jobbole.com/73300/
    jobbole的文章总是这么棒!
    乍眼一看,Ruby和Python的GC实现是截然不同的,Ruby使用John MaCarthy的原生“标记并清除”算法,而Python使用引用计数。但是仔细看来,可以发现Python使用了些许标记清除的思想来处理循环引用,而两者同时以相似的方式使用基于代的垃圾回收算法。Python划分了三代,而Ruby只有两代。

数据库隔离级别

  • 为了解决【更新】、【脏读】、【不可重复读】
  • Read uncommitted -> Read committed -> Repeatable read -> Serializable.
  • 就像范式一样,要依据情况来决定采取何种隔离级别。

二叉树最大距离(相距最远的两个叶子节点)【二叉树宽度】

???????????????????????

两个栈实现一个队列

【主要是思路】
栈的方法有pop push count
始终维护s1作为存储空间,以s2作为临时缓冲区。
细节一,将要弹出的元素不用倒入s2。
细节二,中间加一些判断,比如入队时,先判断s1是否为空,如不为空,说明所有元素都在s1,此时将入队元素直接压入s1;如为空,要将s2的元素逐个“倒回”s1,再压入入队元素。出队时,先判断s2是否为空,如不为空,直接弹出s2的顶元素并出队;如为空,将s1的元素逐个“倒入”s2,把最后一个元素弹出并出队。

hashmap/hashtable/cocurrentHashMap区别

  • 实现原理【hashmap的扩容机制】【cocurrentHashMap桶分割原理,多线程安全】

远程调度算法【实现难度】

Linux命令精选

  • Linux修改进程优先级命令【nice】

  • Linux性能监控命令uptime,平均负载含义【server load】

  • Linux下如何调试程序。如何查看core文件

字符串中只出现一次的字符,如何遍历使遍历次数最少。

http://blog.csdn.net/zzran/article/details/8508175
请看一下代码!

解决的思路是建立一个hash表,hash[256],遍历一遍字符串,记录每个字符出现的次数,然后在重新遍历字符串,查看每个字符出现的次数,如果出现的次数为1,则打印出此字符,遍历停止。

然而,当只要求遍历一遍字符串的时候,只能得到每个字符出现的次数,不能得到字符原来在字符串中的排列顺序。只要能想到这一点,就能够解决问题了。再重新设定一个order数组来记录字符出现的次序,然后遍历次序数组,取出第几次出现的是哪个字符,然后在到hash表中找它出现的次数,如果次数为1,那么就找到符合要求的字符串了。

多线程使用场景?为啥要用多线程

多线程是为了充分利用硬件资源。
单线程就能把你硬件资源耗尽了,那就没必要多线程了。
跑个单线程CPU才百分之几,那这个时候就可以多线程了。

理解并发和并行的区别。
http://www.cnblogs.com/yangecnu/p/3164167.html

并发只是看上去一起。

但是近几年,由于处理器的处理速度已经达到了极限,所以处理器开始向多核方向发展,而提高程序性能的一个最简单的方式之一就是充分利用多核处理器的计算资源。但要编写利用多核处理器处理的程序并不那么简单。所以一些函数式编程语言,如F#,Scala,Erlang等又开始流行起来,因为他们带来的不可变性,递归思想等在一定程度上简化了并行和并发编程。

并行会带来另外一些问题-死锁,线程争用(race conditions),饥饿,以及在单步调试时的内存崩溃。

other

  • 缓存新闻,优化申请主机的问题?

  • 热门语言稍微接触一下吧。用ruby,go,php做点项目?

  • 20分钟ruby教程

  • 链接
    https://www.ruby-lang.org/en/documentation/quickstart/
    http://www.w3cschool.cc/ruby/ruby-syntax.html

  • 每个语言的高级部分
    面向对象
    界面
    正则
    数据库
    发邮件?
    socket
    多线程

面试题

  • mianwww
  • http://www.jobui.com/mianshiti/
  • 笔试题,面试题太多。只能靠平时多总结学习了。每种语言的特性都会在出题时问到,这是一个不错的方式!

其他

  • 哈佛同级帅哥,介绍面试tip

你可能感兴趣的:(day014 【程序员面试宝典】)