面试问题汇总

2017-3-22 腾讯

1、如何运行时修改Java字节码?
参考Java动态编程初探——Javassist

2、如何实现进程间通信?
参考几种进程间的通信方式

3、如何不加锁实现线程间同步?
这个,难道是指原子操作?还有什么特殊情况?

4、struct数据对齐!
我竟然把数据对齐的事情完全忘了,亏我还写过一篇讲数据对齐的文章。Linux要求2字节数据类型2字节对齐,大于2字节的数据类型4字节对齐。

5、链表反转
有很简单的方法,可是面试的时候一紧张没想起来。只要从左到右把元素依次取出来再插入到头结点就行了。

void reverseLinkedList(Node* head)
{
    Node* firstLeft = head->next;
    head->next = nullptr;
    Node* temp;

    while (firstLeft != nullptr)
    {
        temp = firstLeft;
        firstLeft = firstLeft->next;
        temp->next = head->next;
        head->next = temp;
    }
}

6、比进程、线程更细粒度的执行单元
参考协程,又称微线程

7、寄存器的用途
这道题没答出来又是一大败笔,明明自己写过一篇文章详细解析函数调用栈,结果面试的时候还是记不得了。

esp 栈指针
ebp 帧指针,或称栈顶指针
eax 是"累加器"(accumulator), 它是很多加法乘法指令的缺省寄存器。
ebx 是"基地址"(base)寄存器, 在内存寻址时存放基地址。
ecx 是计数器(counter), 是重复(REP)前缀指令和LOOP指令的内定计数器。
edx 则总是被用来放整数除法产生的余数。
esi/edi 分别叫做"源/目标索引寄存器"(source/destination index),因为在很多字符串操作指令中, DS:ESI指向源串,而ES:EDI指向目标串.

8、class对象能否使用memset函数?
不能。class对象中除了数据成员,可能包含成员函数指针、虚函数表等附加的数据结构,使用memset函数会破坏这些结构,导致程序崩溃。

2017-3-29 今日头条

1、Linux中,列出当前及子目录下所有扩展名为“.txt”的文件。

ls *.txt

2、Struts2中,如何输出这个变量的值?
<bean:define id="stringBean" value="helloworld" />

<bean:define />的几种用法:

<!-- 一是定义新字符串常量:-->
<bean:define id="foo" value="This is a new String"/>
<bean:define id="bar" value='<%= "Hello, " + user.getName() %>'/>
<!-- 二是复制一个现有的bean给新的bean:-->
<bean:define id="foo" name="bar"/><!-- 将名字为bar的JavaBean赋值给foo-->

<bean:write name="stringBean" scope="request"/>
相当于
<%= request.getAttribute("stringBean") %>

<%= stringBean %>

3、JSP四大作用域

  • pageContext:当前JSP页面有效
  • request:当前请求周期有效,forward后可跨页面
  • session:当前浏览器会话有效
  • application:整个web应用有效

4、PHP中include和require的区别

唯一区别:include可容忍错误,require不容忍错误。建议在大规模框架中使用require,以确保不出错。

2017-4-7 京东

1、如何解决散列冲突?
两种方法:链表法开放地址法
HashMap用的就是链表法,把冲突的所有元素串成一个链表,头指针放在桶里。
开放地址法分为线性探测再散列和二次探测再散列。如果发生冲突,则向后找到一个空的桶放进去。

2、final关键字修饰的成员能否Override?
不能,只有非final的成员方法可以被覆写。另外,成员变量可以子类同名变量隐藏,而不是覆写,因此final修饰的成员变量仍可被子类隐藏。

3、volatile关键字的用途。
多个线程读取volatile变量时可以保证结果总是最新值。由于每个线程都拷贝了一份变量的副本,如果不用volatile修饰,变量更改的值就不会写入主内存。但是volatile并不保证原子操作,因此用这种变量做计数器还是会出错。

2017-4-8 商汤

1、left join、right join、inner join的区别。
left join返回左表中的所有记录和右表中联结字段相等的记录。
right join返回右表中的所有记录和左表中联结字段相等的记录。
inner join只返回左右表中联结字段相等的记录。

2、缓存淘汰算法LRU和LFU
LRU(Least Recently Used)是最近最少使用页面置换算法,间隔时间最长没被使用的页面最先淘汰。
LFU(Least Frequently Used)是最近最不常用页面置换算法,出现次数最少的页面最先淘汰。

2017-4-9 百度

1、查看CPU和内存使用情况
使用top命令。

2、TCP流量控制和拥塞控制
流量控制是说发送方的发送速率不能超出接收方的接收速率,调整滑动窗口。
拥塞控制是说发送方的发送速率不能导致网络出现拥堵,有四种算法:慢开始、拥塞避免、快重传、快恢复。

2017-4-9 阿里

1、Servlet是单例的吗?
是的。为了减少创建Servlet的开销,Servlet容器只为每个Servlet创建一个实例。多个请求到达时,Servlet容器的调度器从线程池中为每个请求分配一个线程。因此,Servlet对象的成员变量存在线程安全问题,建议不使用Servlet成员变量。

如果让Servlet实现SingleThreadModel接口,Servlet容器就会为每个请求单独创建一个对象,这样也可以避免线程安全问题,但开销太大,不建议使用。

2、Java垃圾回收机制
堆内存被分为三部分:年轻代、年老代、永久代。

Java堆内存分布

年轻代又分为Eden、From和To三个部分。
新创建的对象存放在Eden中,第一次GC后,存活的对象进入To,然后把To中的对象转移到From中。之后每次GC,都把Eden中存活的对象放入To,把From中存活且达到一定年龄的对象放入年老代,其它存活的对象放入To,然后把To中的对象转移到From中。
GC(或Minor GC)只清理年轻代中的对象,Full GC清理年轻代和年老代的对象,而永久代中的对象永远不被清除,因为永久代保存的是各个类的Class对象,直到JVM退出时才清除。

3、数据库事务ACID
ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务(Transaction)的数据库,必需具有这四种特性,否则在事务过程中无法保证数据的正确性,交易过程极可能达不到交易方的要求。

4、MySQL锁机制
数据库锁机制可以提高数据库的并发处理能力。
MySQL有三级锁定:行级锁定页级锁定表级锁定。从左到右粒度逐渐增大,并行性降低。
MySQL有多种存储引擎,不同存储引擎,或同一存储引擎的不同事务隔离级别都有可能采用不同的锁定级别。

MySQL的四种事务隔离级别:

  • Serializable (串行化):可避免脏读、不可重复读、幻读的发生。
  • Repeatable read (可重复读):可避免脏读、不可重复读的发生。
  • Read committed (读已提交):可避免脏读的发生。
  • Read uncommitted (读未提交):最低级别,任何情况都无法保证。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,390评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,821评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,632评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,170评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,033评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,098评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,511评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,204评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,479评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,572评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,341评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,893评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,171评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,486评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,676评论 2 335

推荐阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,137评论 11 349
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,493评论 18 399
  • Java 面试题 整理自牛客网 什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟...
    GuaKin_Huang阅读 10,652评论 19 265
  • 今天咱们接着昨天的话题,聊聊该怎样和熊孩纸聊天。 昨天的“穷光蛋”事件结束后,晚上熊孩纸回到家,姐和他做了第二次长...
    原来是二姐阅读 1,293评论 0 3
  • 一个晴朗的下午,一辆漂亮的自行车,一只疯狂的鸭子,一场动物们的集体狂欢,经典绘本《鸭子骑车记》,文/图:[美]大卫...
    为爱阅读阅读 985评论 0 1