1.stl vector list deque的区别
http://www.iteye.com/wiki/topic/732365
使用区别:
1 如果你需要高效的随即存取,而不在乎插入和删除的效率,使用vector ,支持[]
2 如果你需要大量的插入和删除,而不关心随即存取,则应使用list ,不支持[]
3 如果你需要随即存取,而且关心两端数据的插入和删除,则应使用deque,deque是vector和list的结合
2.vector的内存管理机制:
http://blog.sina.com.cn/s/blog_625cce080100jvw3.html
VECTOR的工作原理是系统预先分配一块CAPACITY大小的
连续空间,当插入的数据超过这个空间的时候,这块空间会让某种方式扩展,但是你删除数据的时候,
它却不会缩小。
vector为了防止大量分配连续内存的开销,
保持一块默认的尺寸的内存,clear只是清数据了
未清内存,因为vector的capacity容量未变化,系统维护一个的默认值
1.虚函数和纯虚函数
纯虚函数形如
class parent
{
public:
virtual void func(...) = 0;
};
只是定义一个接口没有任何实现。纯虚函数的类不能实例化,是个抽象类。子类
必须去实现,否则子类还是抽象类,不能实例化
虚函数是
class parent
{
public:
virtual void func(...){
/*有实现*/
}
};
虚函数的类可以实例化。子类可以重写这个虚函数,也不可以不重写这个虚函数。 parent* p = new son(); p->func();
重写这个函数是时,则调用的是子类的func 。
class son: public parent
{
public:
virtual void func(...){
/*子类有实现*/
}
};
不重写时调用的是父类的func
class son: public parent
{
public:
};
虚函数是为了多态的。如果不加virtual,则不会动态去调用子类的函数了。
构造函数不能是虚函数。析构函数可以是虚函数。
1.内存泄漏(memory leak)指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。
避免内存泄露的方法:
http://www.cppblog.com/kangnixi/archive/2010/02/15/107878.aspx
可以将分配和释放的过程封装到一个类中,即在构造的时候申请内存,析构的时候释放内存,从而保证没有内存泄露。
-----------------------------------------------
2.malloc和new的区别, malloc和calloc的区别
http://liu0107613.iteye.com/blog/406954
malloc和new的区别: 对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。
malloc和calloc的区别:函数malloc()和函数calloc() 的主要区别是前者不能初始化所分配的内存空间,而后者能。如果由malloc()函数分配的内存空间原来没有被使用过,则其中的每一位可能都是0;反之, 如果这部分内存曾经被分配过,则其中可能遗留有各种各样的数据。也就是说,使用malloc()函数的程序开始时(内存空间还没有被重新分配)能正常进行,但经过一段时间(内存空间还已经被重新分配)可能会出现问题。
函数calloc() 会将所分配的内存空间中的每一位都初始化为零,也就是说,如果你是为字符类型或整数类型的元素分配内存,那麽这些元素将保证会被初始化为0;如果你是为指针类型的元素分配内存,那麽这些元素通常会被初始化为空指针;如果你为实型数据分配内存,则这些元素会被初始化为浮点型的零。
---------------------------------------
3.读取一个文本的十行,排序
sed -n '200,600p' a.txt >> b.txt //读200到600行
sort
文件veglist与文件fruitlist的文本行经过合并与排序后被保存到文件clist中。
$ cat veglist fruitlist | sort > clist
.
显示文件example中不重复的行。 uniq - u example
1.如果你只想看文件的前5行,可以使用head命令,
如: head -5 /etc/passwd
2.如果你想查看文件的后10行,可以使用tail命令,
如: tail -10 /etc/passwd
3.你知道怎么查看文件中间一段吗?你可以使用sed命令
如: sed -n '5,10p' /etc/passwd 这样你就可以只查看文件的第5行到第10行
---------------------------------------
微软趣味题:
http://www.iteye.com/topic/513336
----------------------------------------
1. 设计一个容器,主要支持3个操作
1:插入一个整数
2:删除一个整数
3:随机返回容器内的一个整数,每个整数被返回的概率均等
可以假设插入时整数都不重复,删除时容器内一定有你想删除的那个整数。同时系统提
供一个完全随机的复杂度为O(1)的随机函数。
需要上述3个操作都是O(1),怎么设计?
用hash表和数组的结合。定义一个array储存整数,这样第三个需求可以在O(1)完成,另定义一个hash表储存数字和
其在array中的位置,增加时,在array末尾增加整数并将位置加入hash表,删除时,从
hash表查到位置,然后再array中将最后一个数字调整到需要删除的位置,并修改最后一个
数字在hash表中的位置信息
-------------------------
倒排索引的结构是怎样的。
看那个倒排表http://forfuture1978.iteye.com/blog/546771
key是单词和这个单词的df,value是这个单词出现的doc的id和在
这个doc出现的频率tf
-------------------------------
Lucene的典型操作
Directory fsDirectory = FSDirectory.getDirectory(indexDir, true);
Analyzer analyzer = new StandardAnalyzer()
IndexWriter indexWriter = new IndexWriter(fsDirectory, analyzer, true);//true的意思是重写索引文件
Document document = new Document;
document.add(new Field("title", title, Field.Store.Yes, Field.Index.TOKENIZED))
indexWriter.addDocument(document);//生成索引
QueryParser queryParser = new QueryParser("content", analyzer);
Query = queryParser.parse(searchWord);
IndexSearcher indexSearch = new IndexSearcher(indexDir);//指定目录
Hit hits = indexSearcher.search(query);
----------------------------------
多线程sleep()和wait()和join().
http://reeboo.iteye.com/blog/548104
多线程的转换图见附件。sleep进入到block pool
t.sleep(1000):线程t睡眠1000,进入到block pool,
不会释放同步锁,睡完可以runnable
当调用了某个对象的wait()方法时,当前运行的线程就会转入等待状态(WAITING),等待别的线程再次调用这个对象的notify()或者notifyAll()方法(这两个方法也是本地方法)唤醒它,或者到了指定的最大等待时间,线程自动醒来。如果线程拥有某个或某些对象的同步锁,那么在调用了wait()后,
这个线程就会释放它持有的所有同步资源,而不限于这个被调用了wait()方法的对象。
join:在a线程中执行b线程的b.join()方法,是a线程要等到b线程执行完,再执行a
Thread.yield()。让线程调度器将CPU从一个线程转移到另一个线程
线程的状态:
NEW,在start()调用之前
RUNNABLE,处于RUNNABLE状态的线程在JAVA虚拟机(JVM)上是运行着的,但是它可能还正在等待操作系统分配给它相应的运行资源以得以运行----cpu--> running。
BLOCKED,当前线程调用了ThreadObject.sleep()
WAITING,当前线程调用了java.lang.Object.wait()、 java.lang.Thread.join()
TIMED_WAITING,定时等待,当前线程调用了 java.lang.Object.wait(long
timeout)、java.lang.Thread.join(long millis)
TERMINATED;线程执行完run()方法
----------------------------------------
网页爬虫的问题:比如
调度算法、去重、更新策略、分布式存储
http://yangzhao.iteye.com/blog/442375
http://yangzhao.iteye.com/blog/442390
如何识别网页中的重要信息:真正的网络爬虫,是需要比较智能识别到各种网页当中最重要部分,那就是网页正文,识别时间也是不可少一部分。目前,我是TABLE标签或者DIV标签去识别各个网页当中最重要部分。如果是采集新闻信息,那就更好办了。一般情况下,逗号加句号等于或大于10,那么就是你想要得新闻信息。如果不是新闻类型,就是当要网页当中最重要得部分,还需要加一点工作量。就是怎么去掉噪音的问题。噪音一般是table或div内容长度/a标签所包含内容长度>3 (个人经验zz)
网页的更新策略?
http://www.iteye.com/topic/350840#933181
这个可以设定网页的更新权重。比方说行业里面排名靠前的权重大,更新快。否则权重小,更新慢。然后就是,在原始权限的基础上,每次爬下来的内容,和之前的内容作一次对比(把上次的内容取MD5比较)。如果相同,权限就降低一个等级。总是,算法很多,这个不固定。
-------------------------------------------
NIO(new io)与IO
http://wj-126mail.iteye.com/blog/717621里面有说为什么NIO比IO快
原来的I/O库与NIO最重要的区别是数据打包和传输的方式的不同,原来的 I/O 以流 的方式处理数据,而 NIO 以块 的方式处理数据。但NIO还不是异步IO?
一个NIO和socket编程/多线程编程的例子:
http://aga.iteye.com/blog/206691
NIO学习系列:
http://zhangshixi.iteye.com/
---------------------------------------------
1.栈和堆得区别:
http://swingtux.iteye.com/blog/644739
栈:由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。速度比堆快,但程序员是无法控制的。
堆:一般由程序员分配释放 如malloc,速度比较慢,而且容易产生内存碎片
----------------------------------------------
2.C++:析构函数写成虚函数是干什么用的,为什么要这么写?
写成虚的是为了在实现多态的时候不造成内存泄露,
如果基类析构函数前不加vitual,派生类对象被销毁后,只会调用基类的析构函数,而不会去调用派生类的析构函数。
----------------------------------------------
3.写一个宏,求两个数中较大数的一个数
#define MAX(X,Y) ((X)>(Y)?(X):(Y)) 注意括号
----------------------------------------------
4.Raid:
http://www.iteye.com/topic/543390
----------------------------------------------
5.sql教程:
http://www.w3school.com.cn/sql/sql_top.asp
SELECT DISTINCT USERID
FROM (SELECT T2.TOUSERID AS USERID, T2.SENDTIME
FROM USER T1, MESSAGE T2
WHERE T1.USERNAME = 'TestUser'
AND T1.USERID = T2.FROMUSERID
ORDER BY SENDTIME DESC
UNION ALL
SELECT T2.FROMUSERID AS USERID, T2.SENDTIME
FROM USER T1, MESSAGE T2
WHERE T1.USERNAME = 'TestUser'
AND T1.USERID = T2.TOUSERID
ORDER BY SENDTIME DESC)
WHERE ROWNUM <= 10
ORDER BY SENDTIME DESC;
- 大小: 23.7 KB
分享到:
相关推荐
JavaOOP面试题 Java集合/泛型面试题 Java异常面试题 Java中的IO与NIO面试题 Java反射面试题 Java序列化面试题 Java注解面试题 多线程&并发面试题 JVM面试题 Mysql面试题 Redis面试题 Memcached面试题 MongoDB面试题 ...
云计算面试题之ELK面试题,运维工程师必备云计算面试题之ELK面试题,运维工程师必备云计算面试题之ELK面试题,运维工程师必备云计算面试题之ELK面试题,运维工程师必备云计算面试题之ELK面试题,运维工程师必备...
最全的j2EE面试题,题量大、经典,是我面试的整理试题 1、java笔试题大集合 2、各个公司面试题 3、J2EE初学者面试题 4、J2EE面试题(打码查错题) 5、java_华为笔试题 6、java常见面试题 7、java程序员面试宝典 8、...
JSD面试笔试题汇总JSD面试笔试题汇总JSD面试笔试题汇总JSD面试笔试题汇总JSD面试笔试题汇总JSD面试笔试题汇总JSD面试笔试题汇总JSD面试笔试题汇总JSD面试笔试题汇总JSD面试笔试题汇总JSD面试笔试题汇总JSD面试笔试题...
2022java面试题、JVM面试题、多线程面试题、并发编程、Redis面试题、MySQL面试题、Java2022面试题、Netty面试题、Elasticsearch面试题、Tomcat面试题、Dubbo面试题、Kafka面试题、Linux面试题、2021面试题、java面试...
2023年最新版--Java+最常见的+200++面试题汇总+答案总结汇总 阿里百度美团面试题合集 大数据面试题 100道 多线程面试59题(含答案) 最新JAVA面试题总结之基础/框架/数据库/JavaWeb/Redis BIO,NIO,AIO,Netty面试题 ...
"Java 面试题及其答案.doc"和"JAVA面试题.doc"提供了大量的面试题及解答,涵盖了从基础知识到高级特性的广泛范围,包括反射、注解、设计模式、Spring框架、数据库操作等。通过这些题目,求职者可以自我评估,了解...
大数据面试题V3.0完成了。共523道题,679页,46w+字,来源于牛客870+篇面经。 主要分为以下几部分: Hadoop面试题:100道 Zookeeper面试题:21道 Hive面试题:47道 Flume面试题:11道 Kafka面试题:59到 HBase面试题...
java高级软件工程师面试题大全及答,一些公司的面试题,对于正在找工作应对面试的朋友或许有点帮助。java高级软件工程师面试题大全及答,一些公司的面试题,对于正在找工作应对面试的朋友或许有点帮助
文件夹大概有30兆的大小,所以面试题数量也是不少的,里面也包含了个人的一些总结和见解,比如说在集合方面的知识点有实现的各自特点,他们之间的区别,以及等等原理和实现的细节,还包含了java和前端的面试宝典,一...
面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题...
java面试题 程序员面试 逻辑题 笔试题
学习面试小抄面试题需要掌握一定的学习方法,以下是一些常见的学习方法: * 列出面试小抄面试题清单:列出所有可能的面试小抄面试题,以便更好地准备面试。 * 分类学习:根据面试小抄面试题的分类标准,学习和掌握...
企业公司软件测试面试笔试题集合 软件测试面试题 (测试基础).doc 01_企业面试试卷(综合).doc 01_企业面试试卷(综合)_参考答案.doc 04_企业面试试卷(测试基础).doc 04_企业面试试卷(测试基础)_参考答案.doc...
【BAT必备】zookeeper面试题【BAT必备】zookeeper面试题【BAT必备】zookeeper面试题【BAT必备】zookeeper面试题【BAT必备】zookeeper面试题【BAT必备】zookeeper面试题【BAT必备】zookeeper面试题【BAT必备】...
java 面试常见题_基础部分 java 面试常见题_基础部分 java 面试常见题_基础部分 java 面试常见题_基础部分 java 面试常见题_基础部分 java 面试常见题_基础部分 java 面试常见题_基础部分 java 面试常见题_基础部分 ...
华为面试,英文英语部分准备;...英语面试题(各外企JAVA等岗位英文面试题汇总-100问);最新的英语笔试题目及参考答案;最新整理华为面试英语测试常见问题。资料同时适用于外企招聘,外企互联网招聘,微软中国等。
大公司面试智力题集锦
面试题包含了不同技术层面的面试问题,同时也能对一些没有面试开发经验的小白给予不可估量的包装, 让你的薪水绝对翻倍, 本人亲试有效.Java面试题84集、java面试专属及面试必问课程,所有的面试题有视屏讲解, 解答方案....
Java重点面试题 – 针对java面试过程中经常遇到的一些试题进行总结.docx JAVA面试基础知识点总结.docx Java面试笔记.docx 写出正则表达式,从一个字符串中提取链接地址.docx 出现几率最高和覆盖范围最广的一套经典...