baidu记录

早上不到一个小时的面试。大概题目做下记录,算做一次学习。

介绍自己。(需要想一个好点的介绍,起码能说个一分钟,不能冷场了。让面试官有个好的印象)

现在进入正题。

Q1.c/c++中内存分配方式和区别(基础)。

1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static 变量
2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集。
3) 从堆上分配,亦称动态内存分配。程序在运行的时候malloc new 申请任意多少的内存,程序员自己负责在何时用free delete 释放内存。动态内存的生存期由程序员决定,使用非常灵活,但问题也最多。

Q2.从一个英文歌词中,搜索一个字符串出现次数。英文歌词单词有空格隔开,/n 换行。

细想一下就是“统计文本中某个字符串出现次数

一开始想到的是,单词分割然后遍历计数,这样空间复杂度大。想想可以通过一行一行读取,对每一行匹配目标字符串,统计次数。

Q3.函数void function(int ,char,long){}内存分配结构。栈的结构。对齐问题呢?

常见基本类型的字节大小

32位操作系统

char :1个字节(固定)

*(即指针变量): 4个字节(32位机的寻址空间是4个字节。同理64位编译器)(变化*)

short int : 2个字节(固定)

int: 4个字节(固定)

unsigned int : 4个字节(固定)

float: 4个字节(固定)

double: 8个字节(固定)

long: 4个字节

unsigned long: 4个字节(变化*,其实就是寻址控件的地址长度数值)

long long: 8个字节(固定)


64位操作系统

char :1个字节(固定)

*(即指针变量): 8个字节

short int : 2个字节(固定)

int: 4个字节(固定)

unsigned int : 4个字节(固定)

float: 4个字节(固定)

double: 8个字节(固定)

long: 8个字节

unsigned long: 8个字节(变化*其实就是寻址控件的地址长度数值)

long long: 8个字节(固定)

Q4.sql的几种join

inner join默认的,根据匹配条件查找记录

A left join B,A中是全匹配,B中有对应的就填写,没有就NULL

right join相反

full join是两个表的所有记录,对应位置为空就设置为NULL

实例t1: id,name & t2:id,mark,class两个表,查找学生李三姓名,成绩,班级

sql:select t1.name, t2.mark,t2.class from t1,t2 where t1.id=t1.id

Q5.baidu账户user表有千万条级别的用户账户记录。字段是id,name---百度,数据库查询优化

根据id查找name,怎么优化。这个是查询优化问题。对这个题来说就是id作为索引,根据id自己查找。要明确查找条件。避免全局扫描。尽量不用like,<=,in ,之类的。语句不复杂。根据常用查找建立索引。

Q6.socket通讯过程。API。TCP网络通讯。参考详细http://blog.csdn.net/heyutao007/article/details/6588302

Q7.python定义函数,怎么定义一个全局

 def 函数名称([参数1,参数2,参数3......]):
        执行语句

应该尽量避免使用全局变量。不同的模块都可以自由的访问全局变量,可能会导致全局变量的不可预知性。对全局变量,如果程序员甲修改了_a的值,程序员乙同时也要使用_a,这时可能导致程序中的错误。这种错误是很难发现和更正的。 

全局变量降低了函数或模块之间的通用性,不同的函数或模块都要依赖于全局变量。同样,全局变量降低了代码的可读性,阅读者可能并不知道调用的某个变量是全局变量。

但是某些时候,全局变量能够解决局部变量所难以解决的问题。事物要一分为二。

python里面全局变量有两种灵活的用法:

1 声明法

在文件开头声明全局变量variable,

在具体函数中使用该变量时,需要事先声明 global variable,否则系统将该变量视为局部变量。

CONSTANT = 0 (将全局变量大写便于识别)

def modifyConstant() :
        global CONSTANT
        print CONSTANT
        CONSTANT += 1
        return

if __name__ == '__main__' :
        modifyConstant()
        print CONSTANT

2模块法(推荐)

把全局变量定义在一个单独的模块中:
#gl.py
gl_1 = 'hello'
gl_2 = 'world'

在其它模块中使用
#a.py
import gl

def hello_world()
    print gl.gl_1, gl.gl_2

#b.py
import gl

def fun1()
    gl.gl_1 = 'Hello'
    gl.gl_2 = 'World'

第二种方法,适用于不同文件之间的变量共享,而且一定程度上避免了开头所说的全局变量的弊端,推荐!

Q8.python内存管理方式--http://www.cnblogs.com/vamei/p/3232088.html

Python作为一种动态类型的语言,其对象和引用分离。这与曾经的面向过程语言有很大的区别。为了有效的释放内存,Python内置了垃圾回收的支持。Python采取了一种相对简单的垃圾回收机制,即引用计数,并因此需要解决孤立引用环的问题。Python与其它语言既有共通性,又有特别的地方。对该内存管理机制的理解,是提高Python性能的重要一步

Q9Java多线程,怎么实现同步,关键词 http://www.importnew.com/12773.html

synchronized

Q10python怎么copy一个文件到另一个文件

这个问题好搞笑,一行一行读取写入就好了,变量自己赋值,文件直接读入写入就行了。没反应过来感觉白痴了。

Q11爬虫怎么抓图片,怎么确定图片,绝对地址和相对地址的图片呢?  http://blog.csdn.net/longshengguoji/article/details/9946675

http://www.webjx.com/program/zonghe-14189.html、

利用python urlparse包抓取网络图片,根据url获取网页源码,利用正则表达式过滤图片地址,根据地址下载网络图片。

Q12怎么从一个很大的文件中找到目标的内容

1、线性查找:把给定的关键字值与文件中的记录逐个进行比较,直至找到与之匹配的记录为止。若文件中记录数为N,则查找一个记录平均比较次数为(N+1)/2。此法简单,但效率较低。
2、对分查找:此法要求被查找的文件中记录是按关键字值大小顺序排列的。将文件一分为二,把给定关键字值与中点的记录比较,若匹配,则查找成功;否则判断所要查找的记录可能在上半部分,还是在下半部分。然后,对确定的部分继续上述过程,直至找到要求的记录,查找成功;或最后只剩下一个记录仍不能匹配,查找失败。若文件中记录数为N,则查到一个记录的最多比较次数为log2N。
3、跳步查找:先用大步跳过一部分记录,再用较小的步长或顺序查找方法在较小的范围内找到要查找的记录。
4、概率查找:将给定的关键字值按某种公式或算法估算出要查记录的近似位置,然后再用线性查找法确定其准确位置。
5、随机文件数据查找:对于随机文件,如果是计算寻址结构的文件可以采用直接查找的方法,即利用关键字值和记录位置之间的对应关系直接找到该记录。如果是索引结构的文件,先用上述方法查找索引,在索引中找到相应关键字值后,再由索引表上对应的地址找到相应的记录。不同查找方法的效率很不相同,这主要取决于文件结构和查询问题的特点,查询算法本身也是重要影响因素。

Q13测试方法,怎么测试,测试用例

功能测试,白盒测试,性能测试,测试用例











發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章