腾讯 5.20 2017暑期软件开发实习生笔试+面试

题目很全

选择题 不定项

C++基础知识 指针 引用 const

操作系统 磁盘

数据结构 最短路径问题 

网络 http tcp 

估算题 4.5亿个用户 保存状态需要多少内存 

简答题

1.sql语句的编写 很长

2.说明栈和堆的区别

编程题:

1.蛇形矩阵

2.给定一个字符串,可以删除部分字符,求最大回文字符串

基础很重要 光拼刷题是没用的  要理解 要研究 
额 吃完午饭 就通知我来面试了 
 
首先自我介绍
然后介绍论文中的创新点,然后介绍你的项目
我就把论文中的等几何分析解释给他听 讲到自己也蒙了 科研这种东西要给面试官讲 肯定提前准备好
然后一些语言基础,一个exe文件的具体运行过程
MVC的基础底层 这个是我自己挖的坑,他问我你最近看过的一篇技术方面的文章,我本来想介绍下urlroute 但是讲到MVC那里就被问懵逼了
智力题:一个5L一个6L取3L水,
面向对象的特点,面试官告诉我其实C语言也是面向对象的 并直接说我的基础不太扎实
面试官说我iOS时间不长,一直做科研。看论文感觉潜力是有的,但是让他很为难,没做过项目,因为不知道我的技术顶点在哪里。
你说你看英文论文,有没有最近让你印象深刻的东西! 
 
最近看了几本书《程序员的自我修养》 《图解http》《图解TCP/IP》
exe文件那题的答案:原文链接:http://blog.csdn.net/coolmeme/article/details/6001885

从OS层说起吧。

OS都有加载程序的功能,一个可执行文件(比如exe,com等)内部都是机器指令(cpu相关的)和数据,所以可执行文件和OS以及编译器是密切相关的,不同的OS下不同的编译器产生的可执行文件都不尽相同。不同的平台上其格式大概有elf,pe,coff等。大致都是段的形式来表示。而OS的功能就是读懂这些文件然后完成从磁盘文件到内存的映射工作,也就是适当的时候把文件的内容搬到内存适当的位置;

OS加载的过程就是进程创建的过程,进程创建完毕后,会找到“入口函数”去执行;

进入入口函数后就等于进入了运行库,因为入口函数就是运行库的一部分;

入口函数开始初始化运行程序和程序的运行环境,比如堆的初始化,I/O初始化,线程的准备,全局变量等的初始化;

下一步就进入程序的主体,也就是调用main函数部分。

main函数执行结束后又回到入口函数,此时入口函数要进行一些清理工作。

清理完成后执行一个系统调用来kill掉进程。

OK,一个可执行文件的整个执行周期就结束了。

对于c语言,运行库叫crt(c runtime),linux下的crt为glibc,它的程序入口函数为_start,是由汇编语言实现的,包含在crt1.o这个目标库文件里。在windows下crt为msvc crt,它的入口函数是mainCRTStartup。对于每个程序,链接过程都会给你的可执行程序加进一些运行库目标文件,这样才保证你的程序是一个独立的可执行体。正式这些“额外”的代码把你的main函数调用起来的。

一般在链接程序的时候须指定入口函数名。

下面的一个回复:

可执行文件是由我的代码 经过编译-连接-生成出来的
链接过程是加入一些运行库文件.dll以保证程序是独立的可执行体,运行库里面一般是一些头文件中常用到的函数,还包含有入口函数,windows下它叫crt
所以生成可执行文件就和我的编译器有关,所以说编译器不是世界统一的,一种语言在不同的公司会有不同的编译器,而且有不同的版本,所以虽然大体的一个编程语言是不变的,可其中多少因为编译器的问题而有所出入
OS和编译器共同作用产生自己的可执行文件,而可执行文件里面都是机器指令,也就是比汇编还低层的最高效率的语言
然而机器指令还是根据OS的不同而在执行上有所差异(是说是不同OS只能读适合自己的机器指令吗?),否则万物皆可移植。
而后OS读取可执行文件中的机器指令,创建进程,找到入口函数,找到main函数,所有机器指令执行完毕,返回入口函数,杀进程。
再谢前辈写的这篇文章,望回复。