I have installed windows7 home basic with 300 GB SATA hard drive. It is very slow in booting and also running slow. Is there any way to check if hard drive is corrupted? and if so how to recover it and speed up my laptop
You can't 'really' fix a hard drive in a reliable manner. Use chkdsk to scan and attempt to recover. From an older answer - these switches are what you should look at
/R Locates bad sectors and recovers readable information
/b NTFS only: Clears the list of bad clusters on the volume and rescans all allocated and free clusters for errors. /b includes the functionality of /r. Use this parameter after imaging a volume to a new hard disk drive. Works only on vista or better.
The 'smart' thing to do really is to image the drive from linux with gddrescue, and then run checkdisk on the original drive. You might also want to try hdtune - there's a free version and it does smart checks, speed benchmarks and surface checks.
A drive with enough bad sectors to have performance issues shouldn't be relied on for anything important.
Yes, you can use a SMART tool, free from Acronis
Or, pay for SpinRite which is much more through.
Now, purists will say that a SMART tool is not a perfect solution to a hard drive's integrity however, from your question I think it will be more than enough.
If the hard drive is faulty, you don't repair it. You bin in and buy a new one!
Either way, take a back up now!
Or alternatively You can check Your HDD surface with HD Tune, then re-partition the drive and leave the bad area unpartitioned and make the partition to a clear area of the drive. But as others said, it's not a good idea to use that drive, data must be backed up, and the drive must be replaced.