阿里实习面筋

2018.3.23
收集网上阿里面试相关题目:

面筋1

1.第一题实现快速排序,第二题是实现一个同步控制,使用多线程打印abcabcabc

2.很多区间求并集。合并两个有序链表比较快的方法

3.给定一个升序整数数组a和整数x,返回a中>=x最左的位置,如果没有这样的数返回-1, 要求复杂度O(lgn)

4.已知一个单链表中存在环,求进入环中的第一个节点
思路
两个指针,先用flyod判圈法让2个指针进环并走到一起,
然后让一个走一圈得到环的大小,接着两个回到原点,一个走环大小的步数,
之后再一起走,相遇的地方便是入口

5.有一个单向链表,可能有环也可能无环,请把这个链表复制一份.(感觉和一面有点撞题了)
思路:和之前一样,先flyod判圈看看是不是有环,有的话就把入口搞出来,然后分情况copy就好了

6.不用乘法实现两个数的乘法

7.一个先升序后降序的数组中判断一个数是否存在

8.编写算法,实现一个单链表的翻转。

9.实现一个字符串转整形的函数
10.两个有序数组,怎么合并?合并过程中时间复杂度和空间复杂度是多少?

11.他就把这个题升级了一下,说一个长度为100,一个为100万,合并的话,怎么才算最优的?也问了时间复杂度和空间复杂度?复杂度怎么计算的?
二分,lgn,的插入把

12.快排、堆排(大、小)
13.n个区间 问覆盖的长度总和是多少
14.链表翻转——经典的题目,秒掉无压力;
15.编辑距离——算法课学过,动态规划,不过写出正确的代码还是需要一定时间
16.左旋or右旋数组——要求至少给出两种做法,在《剑指offer》上看到其中一种做法。

面筋2

1.TCP协议的三次握手和四次挥手,以及网络中数据包是如何传输的,

2.当浏览器中输入一个url以后,后台的操作是什么样的,如何通过http协议获取网络资源的。

3.数据库方面的问题,数据库的索引如何建立,数据库的存储引擎是怎么样的。

4.操作系统方面问了进程和线程,进程与线程的区别以及如何实现同步,问了实现同步的方法,又问了synchronize,lock的区别,以及wait,notify等的区别。最后问了堆和栈的区别。还有部分数据结构和算法的东西,hashmap的实现原理,以及ConcurrentHashMap如何实现并发控制的。

5.mtu,为什么要三次握手,如果第三次握手没有收到数据包会发生什么。epoll和poll包括select具体实现。进程和线程具体区别(最好细到寄存器方面)。dns和arp之类的具体细节,还有一些简单的基础。

6.类在各种情况下的析构情况,虚函数的各种使用场景以及细节。c++的一些很常见的基础题。linux内核,然后让去在线的ide上写算法题。

7.什么是多态
8.怎样实现多态
9.什么是线程安全
10.你知道有什么线程安全和线程不安全的类
11.HashMap和HashTable的源码(gg没有看过)
12.List和Set有什么区别、Set实现方式(不知道实现方式)
13.==和equals区别
14.equals是怎么来的(最基础的答错了T.T)

面筋3

1.学过哪些技术知识呢?
2.说说接口和抽象类的区别(语法,设计,跨域三方面)
3.怎么判断两个对象是否相等?(名称和类加载器)

4.==和equals的区别(比较方式)

1.==是判断两个变量或实例是不是指向同一个内存空间
equals是判断两个变量或实例所指向的内存空间的值是不是相同
2.==是指对内存地址进行比较
equals()是对字符串的内容进行比较
3.==指引用是否相同
equals()指的是值是否相同

5.排序算法有哪些呢(分类说,插入,选择,交换,归并,基排)

6.堆排序的时间复杂度?怎么计算的(logn)
建堆的过程是n,调整堆的过程是nlgn
调整堆,每次都是从上向下调整,一次调整比较次数lgn,调整n个点就是nlgn

7.说说归并的算法过程(先划分,归并,递归实现,把过程理清)
首先从中间对数据进行二分,然后递归前面二分的过程。
然后当只剩一个元素的时候,开始进行合并操作,合并就是两个数组的合并。

8.知道先序,中序,后序遍历吗?(把算法过程说一遍)
先序,根左右,递归
中序,左根右,递归
后续,左右根,递归

9.事务的实现原理?(源码)
acid,原子性,一致性,隔离性,持久性。

10.说说四层网络模型(每层的协议及应用)
和五层模型相比,没有物理层

11.谈谈tcp,udp的区别,分别有哪些应用(可靠,面向连接,首部)

12.说说tcp三次握手过程?

13.为什么是3次,2次可以吗?4次呢?(从失效的数据报谈2次为什么不行,从响应时间说为什么不用4次)

面筋4

阿里面试完问了相关的问题:
1.项目的介绍

2.智力题
给你一个数n,能否对它开方,不能用乘法

3.计算机基础知识
——操作系统中,给进程分配的管理方式是怎么样的,给你一个4M的内存,怎么分配?
——操作系统中,内存的页级和段级管理方式,两者的区别
——操作系统中,如果给你一个二级页表,那么这个二级页表,可以减少多少的内存,怎么算?
——内存管理知识基本都考到了
——网络拥塞有了解过吗,分为哪几个部分
——滑动窗口是怎么样控制流量的
——linux系统,linux内核,IO栈,IO从上到下的流程,IO请求可以合并吗?

4.还学过什么?
redis,缓存算法,一致性hash

5.编程
模拟实现LRU算法

猜你喜欢

转载自blog.csdn.net/u012414189/article/details/84581111
今日推荐