java和数据结构的面试考点
目标:不要有主要的逻辑错误、2遍以内bug free、注意代码风格 不要让面试官觉得不懂规矩
Java vs C++
Abstract class vs interface
pass by reference vs pass by value
Final/Finally/Finalize
static
- 函数参数或者函数中的局部变量和成员变量同名的情况下,成员变量被屏蔽,此时要访问成员变量则需要用“this.成员变量名”的方式来引用成员变量。当然,在没有同名的情况下,可以直接用成员变量的名字,而不用this,用了也不为错。
- 凡是被private修饰的成员变量,都称为私有变量。它只允许在本类的内部访问,任何外部类都不能访问它。private变量在public方法中被屏蔽 不能用,需要用this关键字自定义。
列表对比:
成员变量、局部变量、静态变量的区别
|
成员变量 |
局部变量 |
静态变量static |
|
|
定义位置 |
在类中,方法外 |
方法中,或者方法的形式参数 |
在类中,方法外 |
|
初始化值 |
有默认初始化值 |
无,先定义,赋值后才能使用 |
有默认初始化值 |
|
调用方式 |
对象调用 |
--- |
对象调用,类名调用 |
|
存储位置 |
堆中 |
栈中 |
方法区 |
|
生命周期 |
与对象共存亡 |
与方法共存亡 |
与类共存亡 |
|
别名 |
实例变量 |
类变量 |
volatile
Primitive types
overriding vs overloading
Public static void main(String[] args)
Checked / unchecked exception
Garbage collection
JVM
Java object class method
Java Serialization
Java heap/stack
Java thread
Java 8 vs. java7
ArrayList vs LinkedList
Vector vs ArrayList:Multi-threaded access but slow VS Dynamic array
Use Array implement ArrayList:public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
二者的区别:
1 ArrayList是一个类,所以它持有了所有类的属性.例如,你可以创建对象,可以调用方法,但array并不提供任何方法. 它仅仅暴露了一个常量的长度来表示当前数组的长度.
2 ArrayList 是动态的,它可以在需要的时候扩大自己的内存,这是一个 array 不可能做到的.ArrayList 也允许你删除元素, 这在array上也是不可能的.
3 array可以使多维度的.例如,你可以设置一个二维数组或者三维数组.可以使你创在一个特殊的数据结构来代表矩阵或者2D形式(terrains),另一方面,ArrayList并不支持允许你指定维度
TreeSet VS HashSet
HashMap vs HashSet
2.3. Map
Collision resolution: Separate chainning/Linear Probing
HashMap原理
HashMap vs TreeMap
HashMap vs Hashtable
HashMap Vs. ConcurrentHashMap Vs. SynchronizedMap
LinkededHashMap
2.4. Arrays
Array的基本操作
2.5. Stack
Recursion
DFS
2.6. Queue
FIFO / PriorityQueue
BFS
Deque:Arraydeque/Linkedlist
Blockingqueue
2.7. Sort
bubble sort/selection sort/insert sort (n^2)
mergesort/quicksort/heapsort (nlogn)
从大的一分为二变成小的一分为二。最坏时每个数互相比较一遍,为n^2
2.8. heap
Priority Queue:
- PriorityQueue这种数据结构支持按照优先级取出里面的元素。这是和其它常用数据结构,比如 ArrayList, Queue, Stack等最大的区别。因为要支持优先级,而heap具有类似的结构,所以,PriorityQueue一般都是基于HEAP实现的。(也可以用其它数据结构实现,但是各种复杂度会有不同。)
- add添加元素逐个sift up,pop删除元素头尾交换后sift down,删除操作:先在数组中交换(n)再up or down(lgn)(底层的数据结构都是用数组来维护的)
- hashheap:删除操作时,先在hash中1查找,之后直接指向heap,再up or down,故为lgn
Comparator vs Comparable
Binary Tree
k叉树
B树/B+ 树
Trie Tree
---
Coding
In-order/Pre-order/Post-order traversal of binary tree
Binary Search
Sort
Greedy
Breadth-first search
Depth-first search
Divide and Conquer
Dynamic Programming
Graph
-- Python --
What is Python & PEP 8?
What is pickling and unpickling?
How Python is interpreted?
How memory is managed in Python?
What are Python decorators?
What is the difference between list and tuple?
How are arguments passed by value or by reference?
What are the built-in type does python provides?
What is namespace in Python?
What is lambda in Python?
In Python what are iterators?
What are generators in Python?
In Python what is slicing?
What is module and package in Python?
--------------------------------
java和数据结构的面试考点的更多相关文章
- JAVA常用数据结构及原理分析
JAVA常用数据结构及原理分析 http://www.2cto.com/kf/201506/412305.html 前不久面试官让我说一下怎么理解java数据结构框架,之前也看过部分源码,balaba ...
- 如何用比较快速的方法掌握Spring的核心——依赖注入,Java web轻量级开发面试教程 读书笔记
我们知道,Java方面的高级程序员一定得掌握Spring的技能,其中包括Spring 依赖注入(IOC),面向切面(AOP),和数据库的整合(比如和Hibernate整合或声明式事务等)以及Sprin ...
- C#面试考点集锦
C#面试考点集锦 ©智客坊 岁末年初往往是程序猿准备跳槽的高峰,当然互联网行业跳槽几乎是每个月都在发生,没有太过明显的淡季~那么,如何提高面试的通过率,最终顺利的拿到自己心仪的offer呢? ...
- Java高级开发工程师面试笔记
最近在复习面试相关的知识点,然后做笔记,后期(大概在2018.02.01)会分享给大家,尽自己最大的努力做到最好,还希望到时候大家能给予建议和补充 ----------------2018.03.05 ...
- (6)Java数据结构-- 转:JAVA常用数据结构及原理分析
JAVA常用数据结构及原理分析 http://www.2cto.com/kf/201506/412305.html 前不久面试官让我说一下怎么理解java数据结构框架,之前也看过部分源码,balab ...
- 【转载】图解Java常用数据结构(一)
图解Java常用数据结构(一) 作者:大道方圆 原文:https://www.cnblogs.com/xdecode/p/9321848.html 最近在整理数据结构方面的知识, 系统化看了下Jav ...
- java web轻量级开发面试教程
最近面试java后端开发的感受:如果就以平时项目经验来面试,通过估计很难——再论面试前的准备 在上周,我密集面试了若干位Java后端的候选人,工作经验在3到5年间.我的标准其实不复杂:第一能干活,第二 ...
- Java常用英语汇总(面试必备)
Java常用英语汇总(面试必备) abstract (关键字) 抽象 ['.bstr.kt] access vt.访问,存 ...
- React16源码解读:开篇带你搞懂几个面试考点
引言 如今,主流的前端框架React,Vue和Angular在前端领域已成三足鼎立之势,基于前端技术栈的发展现状,大大小小的公司或多或少也会使用其中某一项或者多项技术栈,那么掌握并熟练使用其中至少一种 ...
随机推荐
- kddcup2015
kddcup2015,二分类,课程逃课预测.写了好久了,突然想起简单整理一下,以备后需. step1,预处理,利用numpy和pandas库,数值化特征,简单而优雅 #!/usr/bin/env py ...
- 通过优化在UE4中实现良好性能和高质量视觉效果
转自:http://gad.qq.com/program/translateview/7160166 译者:赵菁菁(轩语轩缘) 审校:李笑达(DDBC4747) 对于任何追求UE4性能最佳.同时又想 ...
- Delphi7到Delphi XE2的升级历程
1.PChar 转为PAnsiChar; 2.第三方控件的安装 SuiPack不能直接点击InStall.exe安装,需要打开DPK文件安装: SuiPack安装之后程序编译会报错,resHandle ...
- webpack(2)--Entry
Entry entry是配置模块的入口,可以抽象成输入,webpack执行构建的第一步将从入口开始搜寻及递归解析出所有入口依赖的模块. 注意: entry是必填,若不填写则将导致webpack报错退出 ...
- Petapoco 查询 语法
查询语句 Sql sql = Sql.Builder; sql.Select("spb_MailAddress.*") .From("spb_MailAddress&qu ...
- js中的数组操作
<!DOCTYPE HTML> <html > <head> <meta http-equiv="Content-Type" conten ...
- JavaScript字符串练习
题目: 预备代码: // 自定义输出 var log = function () { console.log.apply(this, arguments); }; // ====== // 测试 // ...
- selenium+python自动化87-Chrome浏览器静默模式启动(headless)
前言 selenium+phantomjs可以打开无界面的浏览器,实现静默模式启动浏览器完成自动化测试,这个模式是极好的,不需要占用电脑的屏幕. 但是呢,phantomjs这个坑还是比较多的,并且遇到 ...
- C++实现ping功能<转>
今天接到需求要实现ping的功能,然后网上查了一些资料,对网络编程的一些函数熟悉了一下,虽然还有一些细节不清楚,但是慢慢积累. 要实现这样的功能: 基础知识 ping的过程是向目的IP发送一个type ...
- ubuntu查询可用安装包
当使用apt-get install packages时,如果不知道安装包的具体名称,可以使用关键字进行搜索,使用:apt-cache search keywords